首页 > 编程语言 >无涯教程-Ruby - 变量声明

无涯教程-Ruby - 变量声明

时间:2023-11-19 21:08:11浏览次数:45  
标签:Customer 教程 end name puts 无涯 Ruby id

变量是存储位置,用于保存任何程序要使用的任何数据,Ruby支持五种类型的变量,本章介绍了这五种变量。

Ruby 全局变量

全局变量以 "$" 开头。未初始化的全局变量的值为nil并使用-w选项生成警告。

分配给全局变量会更改全局状态,不建议使用全局变量,它们使程序变得很难维护,下面是全局变量示例。

#!/usr/bin/ruby

$global_variable=10
class Class1
   def print_global
      puts "Global variable in Class1 is #$global_variable"
   end
end
class Class2
   def print_global
      puts "Global variable in Class2 is #$global_variable"
   end
end

class1obj=Class1.new
class1obj.print_global
class2obj=Class2.new
class2obj.print_global

$global_variable是全局变量。这将产生以下输出-

注意-在Ruby中,您可以通过在变量或常量之前放置一个井号(#)来访问任何变量或常量的值。

Global variable in Class1 is 10
Global variable in Class2 is 10

Ruby 变量

变量以@开头。未初始化的变量的值为nil并使用-w选项生成警告。

这是显示变量用法的示例。

#!/usr/bin/ruby

class Customer
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
   end
end

# 创建对象
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")

# 调用方法
cust1.display_details()
cust2.display_details()

这将产生以下输出-

Customer id 1
Customer name John
Customer address Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer address New Empire road, Khandala

Ruby 类变量

引用未初始化的类变量会产生错误,类变量与子类共享。

这是显示类变量用法的示例-

#!/usr/bin/ruby

class Customer
   @@no_of_customers=0
   def initialize(id, name, addr)
      @cust_id=id
      @cust_name=name
      @cust_addr=addr
   end
   def display_details()
      puts "Customer id #@cust_id"
      puts "Customer name #@cust_name"
      puts "Customer address #@cust_addr"
   end
   def total_no_of_customers()
      @@no_of_customers += 1
      puts "Total number of customers: #@@no_of_customers"
   end
end

# 创建对象
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")

# 调用方法
cust1.total_no_of_customers()
cust2.total_no_of_customers()

 这将产生以下输出-

Total number of customers: 1
Total number of customers: 2

Ruby 局部变量

分配给未初始化的局部变量也可以用作变量声明,变量开始存在,直到达到当前作用域的末尾。

在上面的示例中,局部变量是id,name和addr。

Ruby 常量

常量以大写字母开头,可以从该类或模块内访问在类或模块内定义的常量,而可以在全局访问在类或模块外定义的常量。

常量不能在方法内定义,引用未初始化的常量会产生错误,对已初始化的常量进行赋值会产生警告。

#!/usr/bin/ruby

class Example
   VAR1=100
   VAR2=200
   def show
      puts "Value of first Constant is #{VAR1}"
      puts "Value of second Constant is #{VAR2}"
   end
end

# Create Objects
object=Example.new()
object.show

VAR1和VAR2在这里是常量。这将产生以下输出-

Value of first Constant is 100
Value of second Constant is 200

Ruby 伪变量

它们是特殊变量,具有局部变量的函数,但行为类似于常量,您不能将任何值分配给这些变量。

  • self                      - 当前方法的对象。

  • true                     - 表示true的值。

  • false                    - 代表false的值。

  • nil                        - 表示未定义的值。

  •  __FILE__        - 当前源文件的名称。

  • __LINE__        - 源文件中的当前行号。

Ruby 整数

Ruby支持整数,整数可以从-2 30 到2 30-1 或-2 62 到2 62-1 。此范围内的整数是 Fixnum 类的对象,该范围之外的整数存储在 Bignum 类的对象中。

您可以使用可选的前导符号,可选的基数指示符(八进制为0,十六进制为0x或二进制为0b),然后在适当的基数中输入一串数字来写整数。

您还可以获取与ASCII字符相对应的整数值,或者通过在其前面加上问号来转义序列。

123                  # Fixnum decimal
1_234                # Fixnum decimal with underline
-500                 # Negative Fixnum
0377                 # octal
0xff                 # hexadecimal
0b1011               # binary
?a                   # character code for 'a'
?\n                  # code for a newline (0x0a)
12345678901234567890 # Bignum

Ruby 浮点数

Ruby支持浮点数。它们也是数字,但带有小数。浮点数是 Float 类的对象,并且可以是以下任意一种:

123.4                # floating point value
1.0e6                # scientific notation
4E20                 # dot not required
4e+20                # sign before exponential

Ruby 字符串

Ruby字符串只是8位字节的序列,它们是String字符串类的对象。双引号字符串允许替换和反斜杠表示法,但单引号字符串不允许替换,并且仅对\\和\'允许反斜杠表示法

#!/usr/bin/ruby -w

puts 'escape using "\\"';
puts 'That\'s right';

这将产生以下输出-

escape using "\"
That's right

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

#!/usr/bin/ruby -w

puts "Multiplication Value : #{24*60*60}";

这将产生以下输出-

Multiplication Value : 86400

有关Ruby字符串的更多详细信息,请访问Ruby字符串。

Ruby 数组

通过在方括号之间放置一系列用逗号分隔的对象引用来创建Ruby Array的文字。尾部逗号将被忽略。

#!/usr/bin/ruby

ary=[  "fred", 10, 3.14, "This is a string", "last element", ]
ary.each do |i|
   puts i
end

这将产生以下输出-

fred
10
3.14
This is a string
last element 

有关Ruby数组的更多详细信息,请访问 Ruby数组.

Ruby 哈希

通过在括号之间放置一系列键/值(Key/Value)对来创建文字Ruby哈希,在键和值之间使用逗号。

#!/usr/bin/ruby

hsh=colors={ "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
   print key, " is ", value, "\n"
end

这将产生以下输出-

red is 3840
green is 240
blue is 15

Ruby 范围

范围Ranges表示一个间隔,该间隔是一组具有开始和结束的值。可以使用s..e和s ... e文字或Range.new来构造范围。

使用..构造的范围从开始到结束都包括在内。使用...创建的那些不包括最终值。当用作迭代器时,range返回序列中的每个值。

range(1..5)表示包含1、2、3、4、5个值,range(1 ... 5)表示包含1、2、3、4个值。

#!/usr/bin/ruby

(10..15).each do |n| 
   print n, ' ' 
end

这将产生以下输出-

10 11 12 13 14 15

参考链接

https://www.learnfk.com/ruby/ruby-variables.html

标签:Customer,教程,end,name,puts,无涯,Ruby,id
From: https://blog.51cto.com/u_14033984/8475210

相关文章

  • 无涯教程-Ruby - Blocks块
    您已经了解了Ruby是如何定义方法的,可以在其中放置大量语句,然后调用该方法。同样,Ruby也具有Block的概念。Block语法block_name{statement1statement2..........}在这里,您将学习使用简单的yield语句来调用块。您还将学习使用带参数的yield语句来调用块。Yie......
  • 无涯教程-Ruby - 方法声明
    Ruby方法与任何其他编程语言中的函数都非常相似。 方法名称应以小写字母开头,如果您以大写字母开头的方法名称,Ruby可能会认为它是一个常量,因此可能会错误地解析该调用。方法应该在调用它们之前定义,否则Ruby将为未定义的方法调用引发异常。语法defmethod_name[([arg[=def......
  • 无涯教程-Ruby - 注释符
    注释是Ruby代码中的注释行,在运行时会被忽略。一行注释以#字符开头,它们从#延伸到该行的末尾,如下所示-#!/usr/bin/ruby-w#Thisisasinglelinecomment.puts"Hello,Ruby!"执行后,上述程序会产生以下输出-Hello,Ruby!Ruby多行注释您可以使用=begin和=end语法注释多......
  • Navicat Premium 16 安装并激活图文教程(亲测可行)
    NavicatPremium16安装并激活图文教程(亲测可行)写在前面:网上的po_jie套路很雷同,但是目前官网下载的NavicatPremium16软件包已经修复了永久激活的bug(网上流传的激活方式不行了),这里提供未更新前的软件安装包(可以永久激活)。一、下载安装包navicat161_premium_cs_x64.exe:ht......
  • 无涯教程-Ruby - 类和对象
    面向对象的程序涉及类(Class)和对象(Object)。以车辆为例,它包括车轮,马力以及燃油或汽油箱的容量。这些特征构成了Vehicle类的数据成员,车辆还可以具有某些函数,如停止,驾驶和超速行驶,因此,您可以将类定义为特征和函数的组合。车辆类(Vehicle)别可以定义为-ClassVehicle{Numb......
  • 无涯教程-Ruby - 简介
    Ruby是一种面向对象、命令式、函数式、动态的通用编程语言。在20世纪90年代中期由日本计算机科学家松本行弘(Matz)设计并开发。遵守BSD许可证和RubyLicense。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。由Ruby语言本身还发展出了JRuby(Java平台)、IronRuby(.N......
  • 无涯教程-RSpec - 期望值
    当您学习RSpec时,您可能会读到很多关于期望值(Expectations)的内容,起初可能会有些混乱。当您看到"Expectations"一词时,应牢记两个主要细节-Expectations只是it块中使用expect()方法的一条语句。当您具有如下代码:expect(1+1).toeq(2)时,您期望表达式1+1的值为2。Ex......
  • 无涯教程-RSpec - 过滤器
    在阅读本节之前,您可能需要阅读有关RSpec元数据(Metadata)的部分,因为事实证明,RSpec筛选(Filtering)基于RSpec元数据。假设您有一个spec文件,它包含两种类型的测试:正确测试和错误测试。让无涯教程这样定义它们-RSpec.describe"AnExampleGroupwithpositiveandnegativeExam......
  • 无涯教程-RSpec - 元数据
    RSpec是一种灵活而强大的工具。RSpec中的元数据(Metadata)函数也不例外。元数据通常指“关于数据的数据”。在RSpec中,这意味着有关您的描述,上下文及其块的数据,让无涯教程看一个例子-RSpec.describe"AnExampleGroupwithametadatavariable",:foo=>17docontext'an......
  • 无涯教程-RSpec - Subjects主题
    RSpecsubjets提供了编写简写测试用例的快捷方式。考虑以下代码-classPersonattr_reader:first_name,:last_namedefinitialize(first_name,last_name)@first_name=first_name@last_name=last_nameendenddescribePersondo......