• 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)
    
  • 相关阅读:
    2018年全国多校算法寒假训练营练习比赛(第二场)F
    牛客练习赛2 A
    牛客练习赛1 C
    牛客练习赛1 B
    vb编程代码大全
    javascript编程代码笔记
    391.FANUC宏程序编程
    宏程序编程实例,简单易懂
    Java类与类之间的关系详细介绍
    C++虚继承时的构造函数的讲解
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/11283909.html
Copyright © 2020-2023  润新知