新手问题 该如何理解符号作为实参传入方法呢?

maxchen · 2018年09月22日 · 最后由 pinewong 回复于 2018年09月23日 · 959 次阅读
#!usr/bin/env ruby

def each(i=1,&block)
    puts i
    block.call(i)
end

value = 5

each :value do |i|
    puts "#{i}"
end

输出结果如下:

value
value

请问该如何理解符号作为实参传入方法呢?

把 value = 5 这一行去掉就好理解了

pinewong 回复

也就是说符号作为实参传进去只能作为字符串处理,类似于起到了 switch 的作用是吗?

puts :value # => value
puts "#{:value}" # => value

有什么不对吗?

符号是有别于字符串和整数的另一个基本类型,不指代变量也不等价于字符串。

常量和变量的区别是什么?

maxchen 回复

对,跟你定义的变量 value 没有任何关系

需要 登录 后方可回复, 如果你还没有账号请 注册新账号