科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件花二十分钟教你Ruby快速入门(2)

花二十分钟教你Ruby快速入门(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

字符串中的奥秘

作者:中国IT实验室 来源:中国IT实验室 2007年8月21日

关键字: RUBY

  • 评论
  • 分享微博
  • 分享邮件
字符串中的奥秘        

        “#{name}”是什么意思?这是Ruby在某个字符串中插入其它字符的方式。在大括号之间放入的字符串(这里是指name)将被外部的字符串代替。你也可以使用字符串类内建的capitalize方法来确保某人名字的首字母大写:
image

        上面的代码有两个地方需要说明:
        第一,我们通过无括号的方式调用方法,因为括号是可选的;
        第二,这里的默认参数值为“World”。也就是说在调用方法时如果没有提供name参数,则使用默认值“World”。

进化为Greeter!

        我们是否需要一个真正的问候者(greeter),他能记住你的名字、问候你、总是尊重地向你示好?那么这就最好建立一个“Greeter”类:
image

        在上面的类代码中定义了一个称为Greeter的类和一些类方法,其中出现了一些新的“关键词”:请注意“@name”,它是类的实例变量,并对类中的所有方法(say_hi和say_bye方法)都有效。

        如何让Greeter类发挥作用?现在让我们来建立一个Greeter对象并使用它!image

        Greeter类的实例对象g被建立后,它便接受了name参数(值为Pat)。那么我们能直接访问name吗?
image

        看看上面的编译错误来看,这样直接访问name是行不通的。    
    
窥视对象的内部        

        对象中的实例变量总是隐藏于其中,但也并非毫无踪迹可寻,通过审查(inspect)对象便会见到它们。当然还有其它的访问方法,但是Ruby采用了良好的面向对象的方式来保持数据的隐藏性。image

        喔!这么多方法,可是我们只定义了两个方法呀?其它的方法又出自何处?不要担心,instance_methods方法列出了Greeter对象的所有方法,其中包括父类中定义的方法。如果我们只想对Greeter类的方法进行列表的话,那么把false作为参数调用instance_methods方法即可。false意味着我们不需要父类定义的方法。
image

        哈哈,这才是我们想要的。下面让我们看看Greeter对象能回应哪些方法:image

        它知道say_hi、to_s(此方法将对象转换为字符串,是任何对象都必备的默认方法,很想Java中的toString方法),但它不知道name。 查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章