有几篇讨论try的元编程参考
http://www.iteye.com/topic/169001
http://www.iteye.com/topic/351546
这里也提供一个gem,可以以比较简洁的方式实现,如try.a.b.c即可
gem install trydefault
测试例子如下(需要写在rb文件里测试,irb里面不行)
require ’try_default/default‘
def xxx
"yes"
end
p try.xxx == 'yes'
p (try.xxx.default "no") == 'yes'
p try.xxx.yyy.zzz.nil? == true
#不过暂时还实现不了try.xxx.yyy.zzz || "no"的效果,尽管支持nil?
#p (try.xxx.yyy.zzz || "no") == 'no' will fails, because try.xxx.yyy.zzz is a proxy object
p (try.xxx.yyy.zzz.default "no") == 'no'
#try后面不是方法而是是变量则要改成
#for variable
@xxx = "yes"
p try(@xxx) == 'yes'
p (try(@xxx).default "no") == 'yes'
p try(@xxx).yyy.zzz.nil? == true
p (try(@xxx).yyy.zzz.default "no") == 'no'
p @xxx.try.yyy.zzz.nil? == true
p "#{try.xxx}" == 'yes'
p "#{try.xxx.yyy.zzz}" == ''
#对于有些场合需要确保xxx.yyy有值的,还可以这样
#That will throw undefined method error for makr sure yyy not nil
#p xxx.yyy.try.zzz
分享到:
- 2009-03-24 17:08
- 浏览 1211
- 评论(5)
- 论坛回复 / 浏览 (5 / 2639)
- 查看更多
相关推荐
结合`try-catch-finally`,一个完整的异常处理结构可能如下所示: ```csharp try { // 可能抛出异常的代码 } catch (ExceptionType1 ex1) { // 处理ExceptionType1的代码 } catch (ExceptionType2 ex2) { // ...
一个实现阶乘功能的JAVA小程序,代码较为简单。
Java实现多个wav文件合成一个的方法示例 本文介绍了Java实现多个wav文件合成一个的方法,涉及java文件流读写、编码转换、解析等相关操作技巧。 知识点1:Java中的文件流读写 在Java中,文件流读写是通过使用`...
当一个类实现了`java.lang.AutoCloseable`接口(`Closeable`是其子接口),那么这个类的实例可以在`try`语句的括号内声明,Java编译器会自动在`try`块结束时调用`close()`方法,释放资源。这样可以避免忘记关闭资源...
本篇文章将详细探讨如何实现这样一个通用方法,以处理SQL数据库中的数据。 首先,我们需要引入JDBC(Java Database Connectivity)库,它是Java与数据库交互的标准API。在Java项目中,通常通过添加对应的数据库驱动...
1. **第一个 `catch` 块** (`catch (DivideByZeroException e)`): 当尝试执行除法操作时,如果分母为零,则会触发这个异常。此时,程序将打印出异常的消息。 2. **第二个 `catch` 块** (`catch (FormatException e1)...
其次,try-with-resource语法糖会在编译时生成一个隐含的finally块,在finally块中调用资源的close方法以关闭资源。 最后,try-with-resource语法糖可以自动关闭资源, 无需开发者手动编写关闭资源的代码。 try-...
总之,通过以上代码,我们可以实现一个基本的C#简单计算器,它可以执行加减乘除混合运算。虽然原始版本不支持负数,但通过适当的修改,我们可以轻松地扩展其功能,使其更加强大。这个计算器的实现是一个很好的学习C#...
【标题】"try_code_" 指的可能是一个包含了各种编程尝试或示例代码的压缩文件,这样的资源对于初学者和经验丰富的开发者来说都是宝贵的参考资料。这个标题暗示了这个压缩包可能包含各种语言的代码片段、实验项目或者...
当`try`块中的代码抛出一个异常时,`except`块就会被执行,这样可以确保程序不会因为一个意外的错误而突然终止。在某些情况下,我们可能希望在发生异常时不仅捕获它,而且还要重新尝试执行出错的代码。下面我们将...
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 ...
2. **在程序中抛出一个异常** - 使用`raise`语句来抛出异常: ```delphi raise EMyException.Create('自定义异常消息'); ``` 3. **更精确地捕捉异常** - 在try...except...end结构中,可以通过指定异常类型来...
在"Java AOP 公共异常处理,一个没有try的项目"中,我们可以探讨如何利用AOP实现优雅的异常管理,避免在每个方法中都嵌套冗余的try-catch语句。 AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知...
AutoCloseable 接口是 Java 中的一个接口,定义了 close() 方法,用于关闭资源。 ②、在 try() 代码中声明的资源被隐式声明为 final。这意味着,在 try 块中声明的资源不能被重新赋值。 ③、使用分号分隔,可以...
这里我们将探讨如何利用一个名为`trycatch`的第三方包来实现这种异常处理机制。 首先,我们来看一下`trycatch`包的核心概念。它通过创建一个`TryCatch`结构体,该结构体包含一个错误通道`errChan`用于传递捕获到的...
假如上帝用 python 为每一个来到世界的生物编写程序,那么除去中间过程的种种复杂实现,最不可避免的就是要保证每个实例最后都要挂掉。代码可简写如下: try: born() # 出生 # 正常降临世界 # do something.. ...
本文将详细介绍如何通过传递参数的方法实现对SQLite数据库的添加和查询操作,避免直接拼接SQL语句,从而提高代码的安全性和可读性。 首先,确保你的项目已经引入了SQLite的JDBC驱动,如`sqlite-jdbc-3.27.2.1.jar`...
2. **继承与多态**:为了实现不同立体图形的计算,我们可以创建几个类,如`Cylinder`(圆柱体)、`Cone`(圆锥体)和`Cuboid`(长方体),这些类都继承自同一个抽象基类或实现`Shape3D`接口。通过这种方式,我们利用...
"登陆界面try"这个标题可能指的是一个设计或实现登录界面的尝试,可能是为了优化用户体验或者增加安全性。下面,我们将深入探讨登录界面的相关知识点。 首先,登录界面的基本元素包括用户名输入框、密码输入框、...
下面我们将详细讲解如何编写一个Java程序,实现打开文本文件,逐行读取内容并将其作为字符串显示在屏幕上。 首先,我们需要引入Java的`java.io`包,因为这个包包含了处理输入输出的类,如`BufferedReader`和`...