一. 简介

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。

二. 官方社区(中文)

https://ruby-china.org/

三. 安装

ruby下载安装:https://www.ruby-lang.org/zh_cn/documentation/

rvm下载安装:https://ruby-china.org/wiki/rvm-guide

四. 初试

# 万变不离其宗,先来一个hello world
puts "Hellow world"

五. 函数

def sayHello
puts "Hello world"
end
sayHello def sayHello1(name)
puts "Hello #{name}"
end
sayHello1("ruby")

ruby的函数传参与Python类似,需注意的就是占位输出"#{}"符

六.类

class Player
def initialize(name = "python")  # 构造函数
@name = name
end def show()
puts "player: #{@name}"
end
end python = Player.new()
python.show() ruby = Player.new("ruby")
ruby.show() go = Player.new("go")
go.show()
Ruby 支持五种类型的变量。
1. 一般小写字母、下划线开头:变量(Variable)。
2. $开头:全局变量(Global variable)。
3. @开头:实例变量(Instance variable)。
4. @@开头:类变量(Class variable)类变量被共享在整个继承链中
5. 大写字母开头:常数(Constant)。

1. 先熟悉三个方法

instance_methods(all:bool):列出对象(类)内部的方法
respond_to?:调查对象的方法/属性是否可用
send:执行对象的方法

(1). instance_methods:列出对象(类)内部的可用方法,用于调查解析对象的使用。

class Game
def initialize(title="怪物猎人", price = 200)
@title = title
@price = price
end def show()
puts "标题: #{@title}"
puts "价格: #{@price}"
end def show_1()
end def show_2()
end
end puts Game.instance_methods(false )

注:可以试试把instance_methods中的false改成true

(2). respond_to?:调查对象的方法/属性是否可用,send:执行对象的方法

...
mario = Game.new("超级马里奥", 350)
if mario.respond_to?("show") # 判断对象是否存在show方法
mario.send("show") # 执行指定的方法
end

2. attr_accessor:定义可存取对象的属性

class Game
attr_accessor :price, :title # 提供了可供对象外部使用的属性
def initialize(title = "怪物猎人", price = 200) # 构造函数
@title = title
@price = price
end def show()
puts "标题:#{@title}"
puts "价格: #{@price}"
end
end mygame = Game.new()
mygame.show() puts "title is" + mygame.respond_to?("title").to_s
puts "price is" + mygame.respond_to?("price").to_s mygame.title = "Super Mario World"
mygame.price = 150
mygame.show

注:感觉有点像Python中的global,用来定义全局变量

。。。

先到这,稍后继续

Ruby初见的更多相关文章

  1. 重拾Ruby—新的征程

    作家格拉德威尔在<异类>一书中指出: “人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力.1万小时的锤炼是任何人从平凡变成超凡的必要条件.“ 他将此称为“一万小时定 ...

  2. 安装cocoapods遇到两大坑-Ruby版本升级和Podfile的配置

    今天安装cocoapods #移除原有ruby源 $ gem sources --remove https://rubygems.org/ #使用可用的淘宝网 $ gem sources -a htt ...

  3. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  4. 安装了ruby后怎么安装sass

    在命令行中输入 ruby -v 查看版本号 先移除默认的https://rubygems.org源,命令为gem sources --remove https://rubygems.org/,按回车 ...

  5. ruby 基础知识(一)

    突然今天发现一大神的博客:http://www.cnblogs.com/jackluo/archive/2013/01/22/2871655.html    相信初学者会受益颇多 ruby  参考文档 ...

  6. ruby 基础知识(二)

    ruby  中的动态方法 http://singleant.iteye.com/blog/1680382 Rails 大量使用了符号(symbol).符号看上去很像变量名,不过以冒号作为前缀.符号的例 ...

  7. Ruby安装Scss

    Ruby安装Scss 引言 已经许久不写HTML了,今天有点以前的东西要改.但是刚装的Windows10,已经没有以前的Web开发环境了.只好重新安装. 结果Webstorm装好后配置Scss出现错误 ...

  8. fzf by ruby

    fzf by ruby */--> fzf by ruby 1 github地址 https://github.com/junegunn/fzf 2 简介 软件通过匿名管道和grep扩展了bas ...

  9. The Safe Navigation Operator (&.) in Ruby

    The most interesting addition to Ruby 2.3.0 is the Safe Navigation Operator(&.). A similar opera ...

随机推荐

  1. getFieldDecorator用法(三)——Table增删改

    后台管理系统常用到表单的增删改,这里也做了个封装 例如:user/index.js import React from 'react' import { Card, Button, Table, Fo ...

  2. QTableWidget懒加载(动态加载)实现

    在QTableWidget中加入一行行的数据,如果数据数量过多,滚动起来就会卡顿,插入数据时也会影响性能,为了解决这个问题,采用懒加载的方式,只在界面上显示10几条数据,填满界面.同时增加而外的竖直滚 ...

  3. LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)

    题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: roo ...

  4. LeetCode 142. 环形链表 II(Linker List Cycle II)

    题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶: 你是否可以不用额外空间解决此题? 解题思路 分为三步: 首先判断是否存在 ...

  5. python中列表的简单用法

    1.定义list >>> li = ["a", "b", "mpilgrim", "z", " ...

  6. Activity的screenOrientation属性

    activity在屏幕当中显示的方向.属性值可以是下表中列出的一个值: "unspecified" 默认值,由系统来选择方向.它的使用策略,以及由于选择时特定的上下文环境,可能会因 ...

  7. oc中枚举映射字符串技巧

    后台返枚举数据给app,app需要对不同枚举转换成字符串显示. 一般想到方法用 switch 根据不同枚举变量返回不同字符串,结果就是判断代码写得很长,不优雅.更简便方式有如下: typedef NS ...

  8. 热门搜索词获取java版

    日常生活中经常会有这样的需求,就是网站上.app上需要展示近期热搜的一些词汇,其实常用的做法当然是自己写爬虫去爬,不过这种办法是在太麻烦了,为了节省时间,可以调用一些接口来实现,比如常用的聚合数据,小 ...

  9. ButterKnifer使用

    ButterKnifer使用 1.集成 github地址: https://github.com/JakeWharton/butterknife 1.1在主Moduel中的使用 在主moduel中的b ...

  10. Web23_Listener

    记得在web.xml配置<listener-class>监听器的Copy Qualified Name复制类全名</listener-class> <listener-c ...