gpt4 book ai didi

ruby - `to_s` 没有将整数转换为字符串

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:36 25 4
gpt4 key购买 nike

我在方法中调用 to_s:

$  def my_function(num)
$ number = num.to_s.split(//)
$ puts number
$ end

$ my_function(233)
2
3
3
# => nil

在我看来,在函数内部,没有创建数组,因为输出为 nil。为什么在方法内部调用 to_s.split(//) 时未创建字符串数组?

另外,为什么 puts number 的输出看起来只是每个数字单独一行?我是否需要在函数内显式创建数组,然后显式将拆分后的数字压入其中?

最佳答案

当您在数组上调用 puts 时,它会分别输出数组的每个元素,每个元素后都有一个换行符。要确认您的 to_s 方法正在将数字转换为字符串,请尝试使用 print 而不是 puts

至于输出的nil,那是你函数的返回值。除非有明确的 return,否则函数的返回值将是最后一行的评估,在您的情况下是:puts numberputs number的返回值为nil;打印 number 的值是一个副作用,而不是返回值。

我很好奇为什么在您的第一行代码(不在函数内)中输出确实是一个数组:

$  num = 233
$ number = num.to_s.split(//)
$ puts number
=> ['2', '3', '3']

我怀疑您实际上是在 num.to_s.split(//) 行之后看到的输出,而不是 puts number 行。

关于ruby - `to_s` 没有将整数转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com