编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   

 Wiki.Wiki.   博客博客   搜索搜索   图灵图灵   聊天室  成员成员 
 提示/技巧:Ruby中有点javascript
指数 -> 编程,Ruby. -> 红宝石教程
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
WTD.




邮政发布: 星期五2015年9月23日晚上10:30  帖子主题:提示/技巧:Ruby中有点javascript

在JavaScript中,也可以访问对象的属性,因为它们是关联数组(哈希)的一部分。

代码:
Foo.Bar.


是相同的:

代码:
foo ["bar"]


我们可以去另一种方式。

现在,Ruby通常不用同样的方式,但我们可以破解它,而是为了做同样的事情。

现在,在Ruby,当我们有这样的东西时:

代码:
Foo.Bar.


这是对象“foo”的方法“栏”的呼叫。

那么,我们如何将其转化为哈希查找?

嗯,让我们来看看当一个不存在的方法时会发生什么。

代码:
insaneones @ Ubuntu.:~ $ irb
IRB.(main):001:0> class Foo
IRB.(main):002:1>    def bar
IRB.(main):003:2>       "hello"
IRB.(main):004:2>    end
IRB.(main):005:1> end
=> nil
IRB.(main):006:0> Foo.new.bar
=> "hello"
IRB.(main):007:0> Foo.new.baz
Nomethoderror.:未定义的方法`baz'for#<Foo:0xb7df3b4c>
        from (irb):7
IRB.(main):008:0>


我们得到一个例外,这是有道理的。

那么,我们如何处理这个?

WEL,Ruby的非常动态的性质意味着它不应该让任何人发现有一种方法。如果我们定义一个名为method_missing的方法,它采用方法名称和发送到它的参数,则在调用未定义的方法时将调用该方法。

看。 微笑

代码:
课堂foo
   def initialize
      @internal = {}
   end

   def method_missing(name, *args)
      name = name.to_s
      if name =~ /\=$/
         @Internal [name.sub / \ = $ /,'''= args.first
      else
         @internal[name]
      end
   end
结尾


问题?
赞助
赞助
赞助
赞助
Timmytheturtle




邮政发布: 太阳25,2005,2005年12:34 AM  帖子主题:(没有主题)

我有一个问题,因为我还在学习Ruby这是什么 〜/ = $ /。我以前没见过它
WTD.




邮政发布: 太阳25,2005,2005年1:07  帖子主题:(没有主题)

Timmytheturtle写道:
我有一个问题,因为我还在学习Ruby这是什么 〜/ = $ /。我以前没见过它


代码:
/ \ = $ /


是一个正则表达。考虑到这一点

代码:
/ /


就像:

代码:
" "


对于正规表达式。 微笑

实际正则表达式是:

代码:
= $


这是一种模式。反斜杠逃离=符号。事实证明,我不需要反斜杠。 Backslash意味着逃脱字符,否则会产生一些重要意义。

$表示字符串的末尾。

因此,模式指定字符串末尾的等于符号。

代码:
=〜


这是匹配的运算符,它检查字符串是否与模式(正则表达式)匹配。
Timmytheturtle




邮政发布: 太阳25,205,2005 1:11 AM  帖子主题:(没有主题)

好的,感谢WTD。这种语言开始变得比我第一次预期更容易
WTD.




邮政发布: 太阳25,2005,2005年1:36 AM  帖子主题:(没有主题)

漂亮。
托尼




邮政发布: 星期一2005年9月26日11:15 AM  帖子主题:(没有主题)

娘娘病。捕捉“缺失”的Rails页面 眨眼
托尼




邮政发布: 2005年11月16日星期三下午4:57  帖子主题:(没有主题)

今天我正在为我的应用程序建立综合帮助功能。相当简单,它只是一个负载(?)链接的负担 帮助/类别/主题 控制器/方法/ id,它应该呈现适当的信息。硬编码参考信息进入控制器是一个非常可怕的想法。

红宝石:

def method_missing(姓名,* args)
        category = name
        topic = params[:id]
        开始
                info = YAML::加载(文件::打开(“allinfo /” + category.to_s. + “.yml”).)
                如果 info[话题].? 然后
                        @topic = “找不到主题”
                        @content = “对不起”
                别的
                        @topic = info[话题][“主题名称”]
                        @content = info[话题][“内容”]
                结尾
        救援 => fault
                @topic = “帮助文件未找到”
                @content = “对不起”
        结尾
        render :action => 'viplttopic'
结尾

所以现在你打电话 帮助/ foo / bar,Rails将尝试定位 foo.yml. 文件,找到 酒吧 文件中的条目。 vipltopic. 然后操作渲染页面。

此外,如果有一个复杂的主题,可以创建一个适当的方法(它将不再缺少),并且另一组指令将用于呈现专用页面。

OFCOURS上面的代码宣布缺少文件和条目,因此查找任意条目不会破坏应用程序。
最新来自compsci.ca/blog: Tony's 编程博客。 DWite - A. 编程竞赛.
WTD.




邮政发布: 2005年11月16日星期三下午5:42  帖子主题:(没有主题)

红宝石:
yaml.::加载(文件::打开(“allinfo /” + category.to_s. + “.yml”)


我们清洁有点......

红宝石:
yaml.::加载(文件::打开(“helpinfo /#{category} .ml”)
赞助
赞助
赞助
赞助
从上一个显示帖子:   
   指数 -> 编程,Ruby. -> 红宝石教程
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 8 Posts ]
跳到:   


Style:  
搜索: