ruby中的多线程和函数的关键字传参
1、实现ruby中的多线程
# def test1
# n = 1
# if n > 10
# puts "test1结束"
# else
# while true
# sleep 2
# puts n
# n = n + 1
# end
# end
# end
#
#
# def test2
# n = 100
# if n > 100
# puts "test2结束"
# else
# while true
# sleep 2
# puts n
# n = n + 10
# end
# end
# end
#
# t1 = Thread.new{test1()}
# t2 = Thread.new{test2()}
#
# t1.join
# t2.join
#
ruby的多线程中也是利用queue进行数据的交互和传递,看下下面的例子
$queue = Queue.new def test1
sleep 2
puts "test1"
$queue << "test111"
end def test2 sleep 4
puts "test2"
$queue << "test22222222"
end t1 = Thread.new{test1}
t2 = Thread.new{test2} t1.join
t2.join 2.times do
res = $queue.pop
puts res
end
通过queue对象就可以子线程和主进程之间进行数据交互
定义一个局部变量的queue对象,做数据传递
def test1(queue)
sleep 2
puts "test1"
queue << "test111111111111111111"
end def test2(queue) sleep 4
puts "test2"
queue << "test222222222222222"
end def test
queue = Queue.new
t1 = Thread.new{test1(queue)}
t2 = Thread.new{test2(queue)} t1.join
t2.join
2.times do
res = queue.pop
puts res
end
end test
2、实现ruby中的关键字传参,这里要用冒号,而不是等号
def test(a:"a1",b:"b1",c:"c1")
puts a
puts b
puts c
end test(a:"a2",c:"c2")
3、ruby中普通参数和关键字参数混合使用
def test1(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts a
puts b
puts c
puts d
end test1(1) test1(1,c:"c2")
4、ruby函数关键字和普通参数混用,传递一个Hash,函数的参数使用传递的值和hash中的值
args = {"a":"a11","b":"b11","c":"c11"} def test2(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts "test22222222222222"
puts a
puts b
puts c
puts d
end
5、ruby函数关键字参数和普通参数混用,函数使用默认值和hash两种
args = {"a":"a11","c":"c11"} def test3(d,a:"a1",b:"b1",c:"c1")
# 这里的普通参数必须要放在前面,放在后面会报错的
puts "test333333333333"
puts a
puts b
puts c
puts d
end test3(2,args)
ruby中的多线程和函数的关键字传参的更多相关文章
- python中函数的参数:必传参数(位置参数)、默认值参数、参数组传参、关键字传参
1.必传参数也叫做位置参数,因为必填,也必须对应位置 2.默认值参数如上图的word 3.参数组参数:传进去的是0个.或多个value的形式,,,和位置参数有点像,只传value值,但是没有限制个数 ...
- php匿名函数和闭包函数及use关键字传参及Closure匿名函数类
php闭包函数用use传参有什么意义?答:use引用外层变量,比如全局变量 Closure,匿名函数,是php5.3的时候引入的,又称为Anonymous functions.字面意思也就是没有定义名 ...
- python函数的动态传参.作用域与命名空间
一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...
- python定义函数时的参数&调用函数时的传参
一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...
- Python函数定义及传参方式
主要内容: 1.函数初识 2.函数传参方式 (1)位置参数 (2)默认参数 (3)关键参数 (4)非固定传参 一.函数初识 1. ...
- 二十一、springboot之定制URL匹配规则(项目中遇到的问题:get方式传参,带有小数点,被忽略)
一.问题描述: get方式传参,在传送价格,积分时(带有小数点),debug后台微服务接受到的参数,却不带小数点,如:price是0.55,后台接受后却是0 二.解决 在WebConfiguratio ...
- Ruby中Time的常用函数
Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...
- ruby中数组的常用函数
在程序中定义一个数组 在程序中定义一个数组,因为我们在下面说明. fruits = ["apple", "orange", "lemon"] ...
- bash函数定义/使用/传参…
函数:function, 功能 过程式编程,代码重用 模块化编程 简洁 语法: function f_name { ...
随机推荐
- 机器学习实战书-第二章K-近邻算法笔记
本章介绍第一个机器学习算法:A-近邻算法,它非常有效而且易于掌握.首先,我们将探讨女-近邻算法的基本理论,以及如何使用距离测量的方法分类物品:其次我们将使用?7««^从文本文件中导人并解析数据: 再次 ...
- 2019-2020-1 20199304《Linux内核原理与分析》第八周作业
第七章 Linux内核如何装载和启动一个可执行程序 一.知识点 1.ELF(Executable and Linkable Format)概述: "目标文件"指编译器生成的文件,& ...
- ModelArts微认证零售客户分群知识点总结
\ 作者:华为云MVP郑永祥
- mq解决分布式事物问题【代码】
上节课简单说了一下mq是怎么保证数据一致性的.下面直接上代码了. 所需环境:1.zookeepor注册中心 2.kafka的服务端和工具客户端(工具客户端也可以不要只是为了更方便的查看消息而已) ...
- luogu P2507 [SCOI2008]配对
题目描述 你有 n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一个Bp[i].要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对.例如A={5,6,8},B={5, ...
- luogu P5514 [MtOI2019]永夜的报应
题目背景 在这世上有一乡一林一竹亭,也有一主一仆一仇敌. 有人曾经想拍下他们的身影,却被可爱的兔子迷惑了心神. 那些迷途中的人啊,终究会消失在不灭的永夜中-- 题目描述 蓬莱山 辉夜(Kaguya)手 ...
- mybatis错题
第一题 解析: MyBatis的动态SQL中没有else元素,when元素的test属性中直接书写表达式即可,即test=”表达式”. 第二题 解析: resource属性和url属性是必须的属性,但 ...
- HihoCoder1466-后缀自动机六·重复旋律9
小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段字符构成的字符串. 现在小Hi已经不满足于单单演奏了!他通过向一位造诣很高的前辈请教,通过几周时间学习了创作钢琴曲的基本理论, ...
- Django 05
目录 配置测试脚本文件 单表操作 增加数据 查询数据 修改数据 删除数据 查询十三太保 双下划线查询 连表下的数据增删改 一对多/一对一 多对多 跨表查询 基本对象的跨表查询 (子查询) 基于双下划线 ...
- 深度优先搜索 & 广度优先搜索
目录 邻接表 邻接表的深度优先搜索 邻接表的广度优先搜索 临接数组 临接数组的深度优先搜索 临接数组的广度优先搜索 二叉树 二叉树的深度优先搜索 二叉树的广度优先搜索 邻接表 邻接表的深度优先搜索 假 ...