`

Ruby的try 方法

阅读更多
This is something we’re using on GitHub that I really wish I started using sooner. For lack of a better name, it’s called try().

It works like this:

def remove_email(email)                                                                                         
  emails.find_by_email(email).try(:destroy)                                                                     
end  

Another example:

file_type = file_types.detect { |key,| name.include? key }.try(:last)

Lucky little Io has this idea baked in:

task ?invoke

And, of course, Objective C has something similar.

Here it is in Ruby:

class Object
  ##
  #   @person ? @person.name : nil
  # vs
  #   @person.try(:name)
  def try(method)
    send method if respond_to? method
  end
end

Enjoy
分享到:
评论

相关推荐

    TryRuby:Try Ruby是一个交互式外壳,可以快速而异想天开地教授Ruby编程语言。 最初是_why的想法,它是由对Ruby充满热情并教他们的同伴(女性)如何编程的Rubyists从头开始重新创建的。

    试试Ruby! 版本2(已淘汰) 这是TryRuby的源代码! 版本2。如果要查看原始版本,请运行TryRuby! 版本2代码,然后签出旧版分支。 该代码库已过时。 值得庆幸的是,TryRuby上还有一个新版本! 基于opalrb的版本4。 ...

    Programming Ruby 第二版 英文PDF(非扫描版)

    Programming Ruby 第二版(Second Edition)英文版于2005年出版,之后有了中文版。但可惜的是网上流传的中文版PDF基本上都是扫描版的,文字内容得自己打出来,看到好的代码也得自己动手,无法Ctrl-C + Ctrl-V,还...

    ruby2.6.5-1-x64.zip

    ruby官网文件,但官网的安装包下载速度过于缓慢, 此安装包的版本是2.6.5-1-x64 如果您不知道要安装哪个版本,并且开始使用Ruby,建议您使用Ruby + Devkit 2.6.X(x64)安装程序。它提供了最多数量的兼容gem,并与...

    js-try:JS-Try是Rails中try方法的Javascript实现,用于安全导航

    JS-Try是Rails中try方法的Javascript实现,用于安全导航。 安装 纱线,NPM或凉亭 yarn add js - try npm install js - try bower install js - try 护栏/捆绑器 # Gemfile source 'https://rails-assets.org' do ...

    Ruby中检测Gem是否安装的方法

    最近参加七牛的demo大赛,决定使用ruby开发。于是遇到了一些疑问,然后解决了,这里记录一下。...begin…rescue…相当于java中的try catch。 代码如下: #!/usr/bin/env ruby # encoding: utf-8 def checkGemAva

    bury:类似 Ruby 的 JavaScript 方法

    类似于 Ruby 的 JavaScript 方法。 Bury.js 扩展了原生 JS 对象的原型,例如 String、Number 和 Array。 例子 [ 3 , 3 , 4 , null ] . compact . uniq . sum // => 7 [ 1 , 2 , 3 , 4 ] . append ( 5 ) . last ...

    faulty:基于断路器的Ruby容错工具

    基于Ruby容错工具。 无故障 诸如API之类的外部依赖关系可能随时会开始出现故障,这可能会导致应用程序级联失败。 # The application will always try to execute this even if the API # fails repeatedly api . ...

    redlock-rb:Redlock是Ruby中基于redis的分布式锁实现

    Redlock-使用Redis的Ruby分布式锁。 在许多环境中,不同的进程需要以互斥的方式使用共享资源进行操作时,分布式锁是非常有用的原语。 有许多库和博客文章描述了如何使用Redis实现DLM(分布式锁管理器),但是每个...

    :microscope:一个用于精心重构关键路径的Ruby库。-Ruby开发

    科学家! 一个用于精心重构关键路径的Ruby库。 我如何科学? 假设您正在更改大型Web应用程序中处理权限的方式。 测试可以帮助指导您的重构,但是您是科学家! 一个用于精心重构关键...}#旧方法experiment.try {user.c

    bundle-try:用您想尝试的宝石开始REPL

    安装 gem install bundle-try用法默认情况下, bundle try some_gem将启动Ruby REPL。 要打开外壳程序(即使用gem可执行文件),请执行以下操作: bundle try --shell some_gem 。 一些例子: $ bundle try redis......

    bottomless_hash:无底哈希Ruby宝石

    因此,您无需检查或使用.try.try.try...即可进行链式链接和访问密钥。 params = BottomlessHash . new params [ :world ] [ :thailand ] [ :bangkok ] [ :bangna ] params => { :world => { :thailand => { :...

    Ruby的25个编程细节(技巧、实用代码段)

    2.find(:first, :condotions) 方法 不言而与 代码如下: mobile_info = MobileInfo.find(:first, :conditions => [“mobile_num = ? “, mobile_num.to_i])  3.find(:all, :select, :conditions) 代码如下: ...

    科学家:一个用于精心重构关键路径的Ruby库

    一个用于精心重构关键路径的Ruby库。我如何科学? 假设您正在更改大型Web应用程序中处理权限的方式。 测试可以帮助指导您进行重构,但是您确实想比较负载下的当前行为和重构行为。 require "scientist"class ...

    doc.js:Ruby中的Javascript文档工具

    ) 干净的默认模板与您现有的部署很好地集成对于Ruby爱好者-它是用Ruby写的导游如果您阅读此文章,则可能属于以下群组之一: 您想第一次{file:TRY.md试用Doc.js} 您需要更多{file:USE.md信息,如何使用Doc.js} 您...

    puppet-trycatch

    这是一个简单的Puppet模块,其中添加了try和catch函数。 它们可以用来捕获在try块中引发的异常。 该模块使用V4函数API,因此您需要使用Puppet 4.x或将来的解析器使用Puppet3.7.x。 例子 $ret = try() || { assert_...

    【09-异常处理】

    •当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后在对应的catch 块中修改该异常。 •当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。 Runtime异常的...

    fear:一些Scala单子的Ruby端口

    该gem提供了实现惯用方式的Option , Either和Try monad。 它受到scala实施的极大启发。 安装 将此行添加到您的应用程序的Gemfile中: gem 'fear' 然后执行: $ bundle 或将其自己安装为: $ gem install fear ...

    discourse_api:Ruby话语API

    话语Api Discourse API gem可让您使用Discourse API ... new ( "http://try.discourse.org" ) client . api_key = "YOUR_API_KEY" client . api_username = "YOUR_USERNAME" client . ssl ( ... ) #=> specif

    miyano:Bear note博客系统部署在用ruby编写的Github Pages上

    宫野 这个小工具是为爱好者设计的。 专注于正确的事情-编写内容。 要使用此工具,您需要导出注释并在终端应用程序中运行一些简单的命令。 要求 苹果系统 安装 ... miyano try # try as a local web

    try-reactjs:试试reactjs

    React教程 这是中的React评论框示例。 使用 包括几个简单的服务器实现。...ruby server.rb PHP php server.php 去 go run server.go a go get github.com/xyproto/algernon # or brew install algernon algern

Global site tag (gtag.js) - Google Analytics