为什么在Mac上,YAML将文本“ 2e8”视为字符串,而在Ruby中,将文本“ 2e8”视为Float?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么在Mac上,YAML将文本“ 2e8”视为字符串,而在Ruby中,将文本“ 2e8”视为Float?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1140字,纯文字阅读大概需要2分钟。
内容图文
对于相同的ruby版本,相同的YAML解析器引擎Psych(但具有不同的次要版本),但在不同的操作系统(Mac与Linux)上,文本“ 2e8”在Mac上被视为String,在Linux上被视为Float(200000000.0).为什么?我如何解决它,使它们表现出相同的行为?
>对于Mac:达尔文12.4.0达尔文内核版本12.4.0:根:xnu-2050.24.15?1 / RELEASE_X86_64 x86_64
require "yaml"
RUBY_VERSION # => "1.9.3"
YAML::ENGINE.yamler # => "psych"
Psych::VERSION # => "1.2.2"
Psych.load("2e8") # => "2e8"
YAML.load("2e8") # => "2e8"
YAML.load("'2e8'") # => "2e8"
>对于Linux:Linux 2.6.18-238.el5#1 SMP x86_64 GNU / Linux
require "yaml"
RUBY_VERSION # => "1.9.3"
YAML::ENGINE.yamler # => "psych"
Psych::VERSION # => "1.2.1"
Psych.load("2e8") # => 200000000.0
YAML.load("2e8") # => 200000000.0
YAML.load("'2e8'") # => "2e8"
我知道添加引号’2e8’会产生相同的行为,但是此文本是Mac上生成的转储的一部分,该转储不放置这些引号.
解决方法:
造成差异的是心理版本.
这是相关的提交:https://github.com/tenderlove/psych/commit/2422a9fc3aeff3c60c6510efbf655a34218c7605
您比最新版本晚了大约两年,所以我建议您是否可以更新对项目的依赖关系.
我是怎么找到这个的?使用github出色的比较功能:https://github.com/tenderlove/psych/compare/v1.2.1…v1.2.2
内容总结
以上是互联网集市为您收集整理的为什么在Mac上,YAML将文本“ 2e8”视为字符串,而在Ruby中,将文本“ 2e8”视为Float?全部内容,希望文章能够帮你解决为什么在Mac上,YAML将文本“ 2e8”视为字符串,而在Ruby中,将文本“ 2e8”视为Float?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。