加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Ruby中,`Float(…)`记录在哪里?

发布时间:2020-12-17 01:32:17 所属栏目:百科 来源:网络整理
导读:在 Ruby语言中,您可以像函数一样调用Float,以确保参数是Float或可解析为float的字符串(包括科学记数法等). 例如: Float(1.0) # = 1.0Float('1.0') # = 1.0Float('-1.23') # = -1.23Float('-1e+2') # = -100.0 但是,Ruby文档似乎并没有在任何地方描述这种行
在 Ruby语言中,您可以像函数一样调用Float,以确保参数是Float或可解析为float的字符串(包括科学记数法等).

例如:

Float(1.0)     # => 1.0
Float('1.0')   # => 1.0
Float('-1.23') # => -1.23
Float('-1e+2') # => -100.0

但是,Ruby文档似乎并没有在任何地方描述这种行为(Float v2.1.0,Float v1.9.3).

我在哪里可以找到此功能的文档?

解决方法

它在这里被定义为 Kernel#Float.这个函数是ruby提供的内置转换函数(由Avdi Grimm创造的术语)的一部分.

“你真的,真的,想要将输入对象转换为核心类型,无论原始类型是什么.例如,如果有任何合理的方法,你需要确保任何输入被强制转换为整数 – 传入数据是Float,nil还是十六进制字符串.
“自信的代码,Avdi Grimm.

例如,使用Kernel#Array转换函数,想象一个占用0个,1个或更多帖子的方法.

def process_post(post_or_posts)
    posts = Array(post_or_posts)
    posts.each do |post|
      .... # do something post
    end
  end

当使用不同的输入调用方法时,这提供了一些灵活性:

process_post("post1")
 process_post(["post1","post2"])
 process_post(nil)

如果我们在没有函数的情况下实现它,我们可能需要做这样的事情:

def process_post(post_or_post)
   if post_or_post    # now we have to check for nil
      # we might have to check for instance of Array to make sure we can iterate now.
      # etc..
   end
 end

这一系列功能无疑可以创建灵活的API.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读