Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby “nil”的用例。to#i=>;0`,`"&引用;。to_i#=>;0``nil`。至#f#=>;0.0`,`"&引用;。to_f#=>;0.0`_Ruby_Null_Integer - Fatal编程技术网

Ruby “nil”的用例。to#i=>;0`,`"&引用;。to_i#=>;0``nil`。至#f#=>;0.0`,`"&引用;。to_f#=>;0.0`

Ruby “nil”的用例。to#i=>;0`,`"&引用;。to_i#=>;0``nil`。至#f#=>;0.0`,`"&引用;。to_f#=>;0.0`,ruby,null,integer,Ruby,Null,Integer,我觉得如果“.to_I和”.to_f是nil或引发了一个异常,那么这将是很自然的,并且对我来说定义nil.to_I或nil.to_f没有多大意义 nil.to#i#=>0,“to#i#=>0,nil.to#f=>0.0和”。to#f#=>0.0?有两种情况: 起始值 @count = @count.to_i.next 相对于 @count = 0 @count += 1 转换带来的便利 通常情况下,您会收到带有一些值的集合,这些值是nil。通常,您希望删除这些值或将其作为默认值计算 假设您

我觉得如果
“.to_I
”.to_f
nil
或引发了一个异常,那么这将是很自然的,并且对我来说定义
nil.to_I
nil.to_f
没有多大意义

nil.to#i#=>0
“to#i#=>0
nil.to#f=>0.0
”。to#f#=>0.0
?有两种情况:

  • 起始值

    @count = @count.to_i.next
    
    相对于

    @count = 0
    @count += 1
    
  • 转换带来的便利

    通常情况下,您会收到带有一些值的集合,这些值是
    nil
    。通常,您希望删除这些值或将其作为默认值计算

    假设您有一种方法,可以计算每个SO用户的最高评分帖子的平均分数
    User#highest#u rated
    将返回
    nil
    如果用户根本没有帖子:

    users.map{ |user| user.highest_rated.to_i }.reduce(:+) / users.size
    
    这不是一个完美的例子,但它总是发生在日常转换中


  • 为什么不引发异常或返回
    nil

    Ruby在可用性方面超过了其他技术。到处检查
    nil
    值看起来有点笨拙。事实上,在很多情况下,当我使用这些操作时,就是要确保将
    nil
    值转换为它们的默认对应值


    此外,还期望
    to_i
    (例如)将返回一个整数。返回
    nil
    将是一个轻微的wtf时刻。

    @quetzalcatl JavaScript与Ruby几乎同时出现,我认为前者不会影响后者。它可能来自其他一些语言,比如C或Perl。。我一直认为鲁比年轻几岁。看起来两个朗都是1995年左右出生的。谢谢你指出@CarySwoveland在这种情况下,我会提前从
    a
    中删除
    nil
    。这在语义上似乎更好。嗯。。这个问题不是只有松本幸弘才能回答吗所以你想在你的代码中乱扔一些
    nil?
    检查,而不是说
    x.to\u i
    ?我认为您应该将此讨论带到Ruby邮件列表中。在您的第一个示例中,您使用
    to_I
    只是为了将
    nil
    转换为
    0
    ,这看起来并不优雅,也不可读。我宁愿将其写成
    @count=(@count | | 0)。下一个
    。关于你的第二个例子,如果用户没有得分依据的帖子,那么我认为在计算平均值时排除这些用户更自然。或者,这样的用户从一开始就应该有分数
    0
    。@sawa“您使用
    来实现i
    ,只是为了将
    nil
    变成
    0
    ,这看起来并不优雅”。当你从一个前提开始时,你只会看到一种方法。对我来说,这样的链接方法看起来比括号中的两个值和
    |
    更优雅。我理解的一个设计原则是,最好尽早将任何不规则性标准化。如果有一个数组有一些不规则的值,我宁愿在早期阶段使用
    compact
    nil?
    检查,而不是依赖
    to_I
    来防止以后的错误。@sawa,但是如果这些值在某些情况下是必需的,而在其他情况下是垃圾值,该怎么办呢。您不能删除底部的
    nil
    值。另外,正如我所说的,
    nil
    检查的需要通常不是来自于从db或给定的API调用中得到的东西,而是来自转换。当您通过2-3个
    map
    s数组/哈希时,具有
    nil
    值的情况并不少见。这样做只会提供更好的可用性。