ruby 方法到底是按值传递还是按引用
def pref1(agr)
agr.downcase!
end
a1 = 'HELLO'
pref1(a1)
puts "#{a1}" #输出 hello
def pref2(agr)
agr.downcase
end
a2 = 'PREF2'
pref2(a2)
puts "#{a2}" #输出 PREF2
def pref3(a,b)
a,b = b,a
end
a,b = 1,2
pref3(a,b)
puts a,b #输出 1,2
def pref4(agr)
agr.replace('aaaaa')
end
a4 = 'a'
pref4(a4)
puts a4 #输出 aaaaa
ruby 函数到底是按值传递还是按引用???
[解决办法]
传递, 因为值的范围只作用方法内。
引用, 是全局变量。
[解决办法]
一般的scalar类型是按值传递的,hash和array是按引用传递,在方法中修改后也会改变原来的内容
myList = %w [ 1 2 3]
def swap(list)
list.reverse!
end
swap(myList)
[解决办法]
downcase downcase!方法不一样。 一切都是对象。自然都是按引用传递的啊。