所以我对 Prolog 和 Ruby 都很陌生。在大学学习 Prolog,在我自己学习 Ruby。我在想 Ruby 中是否像 Prolog 中那样存在“不关心”或“丢弃”变量。
我刚打开 irb 就这样做了(假设下划线是“不在乎”的标志)
1.9.2-p290 :003 > _, b, c = [1,2,3]
=> [1, 2, 3]
1.9.2-p290 :004 > b
=> 2
1.9.2-p290 :005 > c
=> 3
结果实际上是我所期望的。但是后来我很好奇下划线的价值在哪里以及它是什么类
1.9.2-p290 :006 > _
=> 3
1.9.2-p290 :008 > _.class
=> Fixnum
嗯,这很奇怪。它不应该把价值丢掉吗?为什么要存储其他值?
然后用下划线进行更多测试,我看到了实际发生的情况,它具有最后的评估值。
1.9.2-p290 :017 > 1
=> 1
1.9.2-p290 :018 > _
=> 1
1.9.2-p290 :019 > "string"
=> "string"
1.9.2-p290 :020 > _
=> "string"
1.9.2-p290 :021 > Hash
=> Hash
1.9.2-p290 :022 > _
=> Hash
所以我的问题是:实际上下划线是为了什么?它真的是一个无关变量还是其他什么?它的真名是什么?(因为我在谷歌上找不到很多“不关心红宝石变量”的东西)