ruby笔记1---- 基本语法


在centos系统上,输入sudo yum install ruby安装ruby

Hello World

在命令行中输入irb,进入ruby交互式命令行
开始hello world
1

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。

$bash 表 示 系 统 提 示 符 , 表示系统提示符, 表示此用户为普通用户,超级用户的提示符是#。

bash是shell的一种,是linux下最常用的一种shell。

$bash的意思是执行一个子shell,此子shell为bash。

2

以下引用自:四种不同的脚本运行方式的区别

使用fork方式运行script时, 就是让shell(parent process)产生一个child process去执行该script,当child process结束后,会返回parent process,但parent process的环境是不会因child process的改变而改变的。
使用source方式运行script时, 就是让script在当前process内执行, 而不是产生一个child process来执行。由于所有执行结果均于当前process内完成,若script的环境有所改变, 当然也会改变当前process环境了。
使用exec方式运行script时, 它和source一样,也是让script在当前process内执行,但是process内的原代码剩下部分将被终止。同样,process内的环境随script改变而改变。

shell中,source 是内置命令,用途是读取文件中内容,并在当前shell中逐条执行。这种方式执行的脚本无须执行权限。source命令可以缩写为一个小数点

//其中test.sh内容如下:

#!/bin/bash
cd ..

同样都是cd …,为什么执行完脚本当前bash目录不变,这就证明了这是由子bash执行,而非交互式bash(两次执行,第一次是用source,第二次是用bash,当前的位置可以看中括号的最后面,这里,~表示/root目录,/表示根目录)
3

设置编码

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-

puts “你好,世界!”;

Ruby 把分号和换行符解释为语句的结尾。

多行字符串和注释

以下代码参考ruby用法
建立多行字符串

#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
 
print <<EOF
    这是第一种方式创建here document 。
    多行字符串。
EOF
 
print <<"EOF";                # 与上面相同
    这是第二种方式创建here document 。
    多行字符串。
EOF
 
print <<`EOC`                 # 执行命令(单引号后面执行命令)
    echo hi there
    echo lo there
EOC
 
print <<"foo", <<"bar"          # 您可以把它们进行堆叠
    I said foo.
foo
    I said bar.
bar

这是第一种方式创建here document 。
多行字符串。
这是第二种方式创建here document 。
多行字符串。
hi there
lo there
I said foo.
I said bar.

在程序运行前调用某段代码

BEGIN {
   code
}

在程序结束时调用某段代码

END {
   code
}

注释是用#
多行注释还可以用:

=begin
这是注释。
这也是注释。
这也是注释。
这还是注释。
=end

使用#{expr}

使用序列 #{ expr } 替换任意 Ruby 表达式的值为一个字符串。在这里,expr 可以是任意的 Ruby 表达式。

单引号里面都是表达原来的字面义,即反斜杠也会被当作反斜杠,而不会和其他字符联合起来(除了\ 和 ’ )。双引号里反斜杠可以和其他字符联合起来表达其他意思。
8

ruby的保留字不能作为常量或变量的名称。但是,它们可以作为方法名。

区间

一个范围表示一个区间。

范围是通过设置一个开始值和一个结束值来表示。范围可使用 s…e 和 s…e 来构造,或者通过 Range.new 来构造。
使用 … 构造的范围从开始值运行到结束值(包含结束值)。使用 … 构造的范围从开始值运行到结束值(不包含结束值)。当作为一个迭代器使用时,范围会返回序列中的每个值。
范围 (1…5) 意味着它包含值 1, 2, 3, 4, 5,范围 (1…5) 意味着它包含值 1, 2, 3, 4 。

9

五种变量

参考自:ruby变量

Ruby 支持五种类型的变量。

一般小写字母、下划线开头:变量(Variable)。
$开头:全局变量(Global variable)。
@开头:实例变量(Instance variable)。
@@开头:类变量(Class variable)类变量被共享在整个继承链中
大写字母开头:常数(Constant)。

1.实例变量以 @ 开头。未初始化的实例变量的值为 nil,在使用 -w 选项后,会产生警告

2.类变量以 @@ 开头,且必须初始化后才能在方法定义中使用。引用一个未初始化的类变量会产生错误。类变量在定义它的类或模块的子类或子模块中可共享使用。在使用 -w 选项后(#!/usr/bin/ruby -w),重载类变量会产生警告。

3.局部变量以小写字母或下划线 _ 开头。
当调用一个未初始化的局部变量时,它被解释为调用一个不带参数的方法。

4.常量以大写字母开头。定义在类或模块内的常量可以从类或模块的内部访问,定义在类或模块外的常量可以被全局访问。
常量不能定义在方法内。引用一个未初始化的常量会产生错误。对已经初始化的常量赋值会产生警告。

nil: 代表 undefined 的值。
__FILE__: 当前源文件的名称。
__LINE__: 当前行在源文件中的编号。

比较运算符

11

ruby也支持并行赋值:

a, b, c = 10, 20, 30
a, b = b, c

特殊运算符

defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式(包括变量和方法等等)是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil。

foo = 42
defined? foo    # => "local-variable"
defined? $_     # => "global-variable"
defined? bar    # => nil(未定义)
defined? puts        # => "method"
defined? puts(bar)   # => nil(在这里 bar 未定义)

::运算符
可以通过在方法名称前加上类或模块名称和 . 来调用类或模块中的方法。你可以使用类或模块名称和两个冒号 :: 来引用类或模块中的常量。

:: 是一元运算符,允许在类或模块内定义常量、实例方法和类方法,可以从类或模块外的任何地方进行访问。

在 Ruby 中,类和方法也可以被当作常量。

只需要在表达式的常量名前加上 :: 前缀,即可返回适当的类或模块对象。

如果 :: 前的表达式为类或模块名称,则返回该类或模块内对应的常量值;如果 :: 前未没有前缀表达式,则返回主Object类中对应的常量值。

MR_COUNT = 0        # 定义在主 Object 类上的常量
module Foo
  MR_COUNT = 0
  ::MR_COUNT = 1    # 设置全局计数为 1
  MR_COUNT = 2      # 设置局部计数为 2
end
puts MR_COUNT       # 这是全局常量
puts Foo::MR_COUNT  # 这是 "Foo" 的局部常量

11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值