新手问题 一个镐头书里面的 变量 / 方法 二义性的问题疑问,求解释

bluetea · 2013年11月28日 · 最后由 bluetea 回复于 2013年11月30日 · 1948 次阅读

原书的 329 页例子: 做了分解,有点还是不太理解,求解答

测试 1 代码: def a print "1.Function 'a' called\n" '3.test' end print "2.a=", a 测试 1 运行结果: C:\Users\wangmjc\project>ruby test.rb 1.Function 'a' called 2.a=3.test

测试 2 代码: def a '3.test' print "1.Function 'a' called\n" end print "2.a=", a 测试 2 运行结果: C:\Users\wangmjc\project>ruby test.rb 1.Function 'a' called 2.a=

目前看到是二义性在调用 method 的时候有些区别,但是这个现象自己不太明白,自己也想不通,求解答

测试一

def a
  print "1.Function 'a' called\n"
  '3.test'
end
# 方法 a 的输出是 `1.Function 'a' called\n` 这个字符串 , 方法 a 的返回值是 `3.test` 这个字符串

print "2.a=", a 
# 这句打印语句中, 解释器读入这行,看到后面的 a 就是个 method ,运行之,a 方法的输出值上屏。然后 `print "2.a=", a` 整句运行,后一个 a 用返回值代入,即输出 `2.a=3.test`

测试二

def a
  '3.test'
  print "1.Function 'a' called\n"
end
# 方法 a 的输出是 `1.Function 'a' called\n` 这个字符串 , 方法 a 的返回值是 nil 

print "2.a=", a
# 同上... 就是返回值变了

额... 我也不知道理解得对不对

即使加上代码格式化按钮了还是有人不懂格式化。

就是方法 a 返回值不同而已,正如@blacktulip所说

@blacktulip print 和 p 返回值怎么不一样呀

@blacktulip 明白了,非常感谢!

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