`

20分钟体验Ruby

    博客分类:
  • Ruby
 
阅读更多

20分钟体验Ruby:http://www.ruby-lang.org/zh_cn/documentation/quickstart/

安装:三种方式:源代码;rubyinstaller.exe;ruby.exe

运行:cmd->irb

-------------------------

简单示例:

1、

>puts “Hello World”

Hello World

=>nil          //nil是Ruby的空值,puts命令返回nil

 

2、

>3*2

=>6

>Math.sqrt(9)     //Math是自带的数据模块,模块:功能相同的函数放到同一个名称下。

=>3.0

>a = 3**2    //**是次方的意思。给变量a赋值。

 

=>9

3、

定义函数

>def h         //定义函数

>puts "Hello World"

>end           //函数结束

=>nil

调用函数,直接输入h或者h()。

------------

>def h(name)       //添加入参

>puts "Hello #{name}!"

>end

------------

>def h(name = "defaultName")   //为入参添加默认值

>puts "Hello #{name.capitalize}!"  //使用入参的字符串值,并且首字母大写

>end

调用:h "world"或者:h            

------------

4、

定义类

class Greeter

    def initialize(name = "World")

        @name = name    //@name是实例变量

    end

    def say_hi

        puts "Hello #{@name}!"

    end

    def say_bye

        puts "Bye #{@name}!come back soon!"

    def

end

使用类:

>Greeter.new("Pat")

=>#<Greeter:0x16cac @name="Pat">

>g.say_hi

--------

>g.name   //compile error 面向对象,属性隐藏

--------

>Greeter.instance_methods //将打印所有方法,很多是继承自父类,如果不希望继承类的方法打印

>Greeter.instance_methods(false)

--------

respond_to是内置函数,用于测试对象对指定方法是否有反应

>g.respond_to?("name") //没有

=>false

>g.respond_to?("say_hi")

=>true

>g.respond_to?("to_s") //to_s是内置函数

=>true

--------

打印并改变类,ruby可以获取甚至改变属性名

>class Greeter    //打开类

>    attr_accessor :name  //通过attr_accessor来改变属性,它会引入两个方法:name(读取变量                           //的值);name=方法(为变量赋值)

>end

>g = Greeter.new("kity")

>g.respond_to?("name")

=>true

>g.respond_to?("name=")

=>true

>g.name="kity2"

>g.say_hi

=>Hello kity2!

 ------------------------

一大波代码...

#!/usr/bin/env ruby

class MegaGreeter
    attr_accessor : names

    # Create the object
    def initialize(names = "World")
        @name = names
    end

    # Say hi to everybody
    def say_hi
       if @names.nil?
            puts "....."
       elsif @names.repond_to?("each")
           # @names is a list of some kind,iterate!
           @names.each do |name|
               puts "Hello #{name}!"
            end
       else
            puts "Hello #{@names}!"
       end
    end

    # Say bye to everybody
    def say_bye
        if @names.nil?
            puts "......"
        elsif @names.respond_to?("join")
            # Join the list elements with commas
            puts "Goodbye #{@names.join(", ")}. Come back soon!"
        else
            puts "Goodbye #{@names}. Come back soon!"
        end
    end

end



if __FILE__ == $0
    mg = MegaGreeter.new
    mg.say_hi
    mg.say_bye

    # Change name to be "Zeke"
    mg.names = "Zeke"
    mg.say_hi
    mg.say_bye

    # Change the name to an array of names
    mg.names = ["a", "b", "c"]
    mg.say_hi
    mg.say_bye

    @Change to nil
    mg.names = nil
    mg.say_hi
    mg.say_bye
end

 存储文件:ri20min.rb,然后运行:ruby ri20min.rb

上面的代码中,使用each函数,它是一个可接受代码块的函数,它在迭代每一个元素时,会调用一次接受的代码块。代码块像是一个不需要命名的函数。

@names.each do |name|  //很优美
    puts "#{name}"

 -----------------------

代码块

代码块用于处理比迭代列表更繁琐的工作,您可以用它来自动安装卸载或处理运行错误。真正做到让用户省心、放心。

使用@names.respond_to?("join")这风格称为“鸭子型”-它走起来像鸭子,叫起来像,就是鸭子。

-------------------------

if __FILE__ == $0

 __FILE__存有现在运行的脚本的文件名字,$0是启动脚本的名字。上面的语义:当运行的脚本是启动脚本时,才执行下面的代码。这样有个好处:如果脚本是被调用时使用时,可不执行这里的内容。

--------------

引子:更深的概念点  代码块/yield/模块/mixins

 

分享到:
评论

相关推荐

    二十分钟Ruby入门教程

    在二十分钟的Ruby入门教程中,我们将快速浏览Ruby的基础知识,包括语法、数据类型、控制结构以及简单的类定义。 首先,让我们从Ruby的基本语法开始。Ruby的注释以`#`字符开始,一直持续到行尾。例如: ```ruby # 这...

    Ruby语言教程&案例&相关项目资源分享.docx

    #### 20分钟体验Ruby 官方提供的快速入门教程,介绍Ruby的基本特性和语法,适合没有编程基础的新手。 #### Ruby课程 阿里云大学提供的Ruby课程,覆盖从基础到进阶的内容,适合希望深入学习的开发者。 #### Ruby...

    成功搭建Ruby运行环境为您展开Ruby体验大门

    成功搭建 Ruby 运行环境为您展开 Ruby 体验大门 在学习 Ruby 语言时,首要任务就是搭建 Ruby 的运行环境。只有当运行环境搭建完成后,才能找到符合以往开发习惯的 IDE 工具、看一看入门的例子、学习语言相关的知识...

    Ruby完全自学手册

    Ruby语言设计之初就非常注重开发人员的编程体验,它拥有自然、表达性强的语法,易于阅读和编写,因而备受广大开发者的喜爱。Ruby语言非常强调代码的可读性和简洁性,因此它在Web开发、尤其是Web框架Ruby on Rails中...

    ruby语言帮助文当

    这三份文档——ruby20-stdlib.chm、ruby20-core.chm、ruby20.chm,可能分别涵盖了Ruby 2.0的标准库、核心库以及整个语言的通用信息: 1. `ruby20-stdlib.chm`:很可能包含了Ruby 2.0标准库的详细文档。Ruby的标准库...

    Ruby-TensorStream用Ruby重新实现TensorFlow

    这为Ruby开发者提供了更直观、更无缝的体验,同时也减少了跨语言交互的复杂性。纯Ruby实现也意味着更少的依赖项,简化了安装和部署流程。 **2. OpenCL支持** 除了纯Ruby评估器,Ruby-TensorStream还支持OpenCL评估...

    ruby语法基础教程

    通过学习,你将能够编写出高效、易读的代码,并体验到Ruby带来的编程乐趣。无论是Web开发、自动化任务还是数据分析,Ruby都能提供强大的支持。所以,让我们开始这段旅程吧,一起揭开Ruby的神秘面纱。

    ruby - ruby tutorial

    对于希望快速体验 Ruby 的用户,可以使用在线平台来尝试编写和运行 Ruby 代码,而无需安装任何本地环境。这种方式非常适合初次接触 Ruby 或者希望快速测试某些概念的用户。 #### 本地环境搭建 为了能够长期使用 ...

    Ruby-Mobility可拔插的Ruby翻译框架

    Ruby-Mobility是一款强大的、可拔插的Ruby翻译框架,专为解决多语言支持而设计。这个框架的主要目标是提供一种灵活、高效且易于集成的方式来处理应用中的国际化(i18n)问题。Ruby-Mobility的核心设计理念在于解耦...

    Ruby-irbtools改善Ruby的IRB控制台

    **Ruby-irbtools:提升你的Ruby交互式编程体验** Ruby IRB(Interactive Ruby)是Ruby语言的标准交互式shell,允许开发者在运行时测试代码、探索类库和调试程序。然而,IRB本身的功能相对基础,对于一些高级的开发...

    Ruby Programming

    从那以后,我一直享受着不间断的愉悦Ruby编程体验。这部分归功于我学习这门语言的质量来源。我并非唯一一个说过每种语言都应该有这样的书的人。” - **Ryan Davis**(Seattle.rb创始人)认为:“《Pick Axe》让我...

    Ruby-Yard是一款Ruby文档工具

    Ruby-Yard是一款专门为Ruby语言设计的强大文档工具,旨在帮助开发者更高效、更规范地生成和管理他们的代码文档。它的核心特性在于提供了一种简洁而强大的方式来解析Ruby代码中的注释,将这些注释转化为结构化的文档...

    Ruby-OAuth2一个OAuth20协议的Ruby封装

    OAuth 2.0的设计目标是简化开发者的使用,同时提高安全性和用户体验。 OAuth 2.0流程主要包括以下几个步骤: 1. **授权请求**:用户通过客户端(如应用)被引导到授权服务器,请求访问权限。 2. **用户授权**:用户...

    Ruby入门教程中文PDF 附实例

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程针对初学者,旨在帮助读者快速掌握Ruby的...通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。

    ruby under a microscope

    - David Deryl Downey即使不经常研究Ruby内部,也认为本书是一次极好的阅读体验。 ##### 书籍价值 - **理论与实践结合**:不仅提供了理论上的解释,还提供了丰富的实际案例,使读者能够将所学应用于实践中。 - **...

    Ruby教程 脚本语言

    Ruby是一种高效且灵活的面向对象编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年创建,旨在提供一种易于理解、简洁且强类型的编程体验。它的设计理念是结合Smalltalk的面向对象特性、Perl的文本处理能力...

    ruby2.1.6安装文件

    7. **Ruby调试器改进**:内置的调试工具如`pry`和`byebug`在Ruby 2.1.6中得到增强,提供了更好的交互式调试体验。 8. **安全的动态类型**:虽然Ruby是动态类型语言,但2.1版本开始,引入了更严格的类型检查,如`...

    Ruby-Puma一个Ruby的并发Web服务器

    Ruby-Puma是一个高性能、轻量级且并发的Web服务器,专为Ruby编程语言设计。它在Ruby社区中广泛用于构建Web应用程序,特别是与Rails框架一起使用。Puma的设计目标是提供稳定、快速和易于管理的服务,同时保持低内存...

    Ruby-Raven是Sentry的一个Ruby客户端

    通过Raven-Ruby,你可以有效地管理和解决你的Ruby应用程序中出现的错误,提高开发效率,提升应用的稳定性和用户体验。在实际项目中,结合持续集成和自动化测试,Raven-Ruby可以帮助你构建出更加健壮和可靠的软件系统...

    ruby2.6.1.zip

    解压"ruby2.6.1.zip"后,你可以得到"ruby-2.6.1"目录,里面包含了完整的Ruby 2.6.1源码、预编译二进制文件、安装脚本以及相关的文档。由于这是一个zip版本,解压后可以直接使用,无需安装过程,这对于开发者来说是一...

Global site tag (gtag.js) - Google Analytics