【发布时间】:2010-02-11 09:21:54
【问题描述】:
为什么与null比较如此不稳定?
只需编码。
IronRuby 0.9.4.0 on .NET 2.0.50727.4927
Copyright (c) Microsoft Corporation. All rights reserved.
>>> require 'System'
=> true
>>> i = System::Int32.MinValue
=> -2147483648
>>> i==nil
=> false
>>> d = System::DateTime.Now
=> 11.02.2010 14:15:02
>>> d==nil
(ir):1: can't convert NilClass into System::DateTime (TypeError)
>>>
在 9.1 中,此代码按预期工作。
编辑:
解决方法:
>>> i.nil?
=> false
>>> d.nil?
=> false
>>> nil
=> nil
>>> nil.nil?
=> true
>>>
【问题讨论】:
-
现在这是一种解决方法。这就是你在 Ruby 中定期检查 nulity 的方式。
-
@Shay Friedman WTF 不在检查中,它在不一致
-
+1 表示问题中的“WTF”。
-
+1 我们应该向 IronRuby 团队填写一个错误。我知道 .NET (CLR) 中的 DateTime 也不能为空,只有 MinValue 和 MaxValue。除非实现 Nullable 类型。但它应该作为整数工作。
-
@Jirapong 是的,当然ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3930
标签: .net ironruby dynamic-language-runtime