为什么数组在full_name枚举期间返回随机布尔值,而不是在 ruby 控制台中返回?IRB



为什么数组(在映射块内(如果在Ruby控制台中执行时才返回[true,true,false]:x = [(rand 2(==1,(rand 5(==3,(rand 11(==6],然后x,x,x?

first = "stephanie"
last = "devenport"
middle = "Lbp"
full_name = "#{first} #{middle} #{last}"
puts "#{full_name}sssss"
.rstrip.gsub(' ', '').split(//)
.map{ |char| [(rand 2)==1, (rand 5)==3, (rand 11)==6].any? ? "#{char + ['~', '%', '^', '#'].sample}" : "#{char.upcase + ['-', '_'].sample}" }.join.chop

在终端内运行返回 => S_t~e~p~h#A_n~i^E_L_b~P-d~e^v#E_n%p~o~R-T

x = [(rand 2)==1, (rand 5)==3, (rand 11)==6]

这将构造一个包含三个元素的数组并将其存储在 x 中。该数组中的值是随机的,但它们是在构造数组时确定的。每当您查看x时,它将始终是相同的三元素数组,因为已经进行了随机调用并且结果已存储在数组中。

问题是x只是指向内存中某些值的指针。你不能"调用"它。要每次都得到不同的结果,你需要 x 成为一种方法

def x
  [(rand 2)==1, (rand 5)==3, (rand 11)==6]
end

最新更新