我有一些声音pi代码,应该演奏8次旋律,每次演奏都较柔和。但是,它没有注意该变量。我做错了吗?
8.times do
i = 1
play 50, amp: 0.1 * i
sleep 0.25
play 55, amp: 0.2 * i
sleep 0.25
play 57, amp: 0.4 * i
sleep 0.25
play 62, amp: i
i = i - 0.125
end
您的代码至少存在三个问题:
i = 1
。i ||= 1.0
的顶部也不起作用,因为在每次循环开始时i始终为n。考虑以下现有代码的最小示例:
8.times { i = 1; i -= 0.125 }
i # NameError (undefined local variable or method `i' for main:Object)
即使您对块中的i进行内省,您也会看到它永远不会随着当前逻辑而递减。
解决问题的最简单方法是在块外设置i的初始值。例如:
i = 1.0
8.times do
i -= 0.125
p i
end
i
#=> 0.0
使用Kernel#p语句,您可以看到数字递减计数:
0.875 0.75 0.625 0.5 0.375 0.25 0.125 0.0
您还可以看到变量现在可以在块外部访问,并且在块退出后访问变量时不再返回NameError。
i
#=> 0.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句