美文网首页
ruby 方法调用中的*和&

ruby 方法调用中的*和&

作者: SecondRocker | 来源:发表于2016-03-13 23:09 被阅读293次

在ruby方法定义、调用中,*可以把数组转化为参数,&可以把Proc或lambda转化为块,在开发中可以起到很好的作用

  • 可以在定义方法时使用,可定义不定长度参数;也可在方法调用时在数组前传递,将数组转为参数
#定义不定长方法
def do_it *args
#args为数组
    puts args.join(',')
end
do_it 1,2,3 #输出 1,2,3
do_it 1,2,3,4 #输出1,2,3,4
# *转化数组为参数
def can_pass_array(a,b,c,d)
   puts "#{a}|#{b}|#{c}|#{d}"
end
can_pass_array *[1,2,3,4] #输出 1|2|3|4

工作中的一个例子

sql,sql_array = " 1 = 1",[]
unless params[:status].blank?
   sql += " and status = ?"
   sql_array << params[:status]
end
unless params[:inquire_state].blank?
   sql += " and inquire_state = ? "
   sql_array << params[:inquire_state]
end
Task.all :conditions => [sql,*sql_array]
  • &可将Proc或lambda转为块
def method_with_block
    yield(3) if block_given?    
end
#输出 3
method_with_block &Proc.new{|x| puts x}
method_with_block &lambda{|x| puts x}
#将传入的块转为Proc用于其他方法
def method2 &block
    other_method(block) #block为Proc
end
methods{|x| puts x}

相关文章

  • ruby 方法调用中的*和&

    在ruby方法定义、调用中,*可以把数组转化为参数,&可以把Proc或lambda转化为块,在开发中可以起到很好的...

  • Ruby元编程笔记 - 方法

    Dynamic Method 通过send()去动态调用方法: 在Ruby2.2.2中,send()依然可以调用私...

  • 常用的Ruby方法

    1 当你发送消息到Ruby对象时,Ruby查询与消息同名的方法来调用。Ruby进行方法调用主要有两种方式,obj...

  • From Objective-C to Ruby(3)-方法和块

    方法 定义方法 OC: ruby: 调用方法 OC: ruby: 参数的默认值 OC: 方法的返回值 OC: ru...

  • Ruby 方法的调用

    方法是有对象定义的与该对象相关的操作. 在 Ruby 中, 对象的所有操作都被封装成方法. 简单的方法调用 调用方...

  • ruby 方法的调用

    1、调用的方式 对象.方法名(参数1,参数2, ... ,参数n) 以对象开头,中间隔着句点,后面接着是方法名,方...

  • ruby元编程(附录)

    拟态方法 拟态方法就是去掉括号调用方法的方式,会给ruby开发者带来很多语法糖,当然也会给开发者和ruby本身增加...

  • yield in ruby

    ruby中的关键词yield通常在一个方法中调用,对代码块进行控制,如果没有提供对应的代码块,调用该方法将导致异常...

  • 我眼中的元编程-方法篇

    Ruby是一门动态语言,动态创建与调用方法是其中一个体现。 动态方法 动态调用方法(动态派发) 动态调用方法,是指...

  • ruby中调用shell

    可以使用以下6种方式,参考链接http://www.cnblogs.com/wangyuyu/p/3791247....

网友评论

      本文标题:ruby 方法调用中的*和&

      本文链接:https://www.haomeiwen.com/subject/kskflttx.html