Ruby学习笔记之基础

目前最新NIST随机数测试软件下载、安装、及使用教程 最近由于科研需要,在搞一些随机数的测试的事情,众所周知 随机数测试我们可以使用NIST的软件进行多大15项的随机测试,我也在网上查找了很多大牛的博客,但是都是年代久远,很多的链接现在都是物是人非,都是不能直接使用了,今天顺便抽点时间更新一下这个NIST软件的下载及使用。我们首先讲一下该软件的下载:1.我们直接取NIST的官网(https://csrc.nist.gov/)下载即可 ;链接如下:下载... 阅读详情

Ruby基础


字符编码

Ruby中字符串中的编码依赖于其文件的字符编码,可以在文件开头设定文件编码如下:

[Ruby]

#encoding: utf8

# -*- coding: utf-8 -*- # Specify Unicode UTF-8 characters

[/Ruby]

标准输入输出

puts和putc 用来输出

printf用来格式化输出

gets用来读取,但是还要转换成其他的类型的数据

as:number = Integer(gets)

p是puts的简写,但是可以打印出更加有好的信息

Ruby命名规则


Ruby中的命名规则和C语言相同,面向对象的命名则是驼峰法。

全局变量

Ruby中有全局变量,这个和其他语言不同。又因为Ruby是一个纯的面向对象的语言,因此全局变量显然不符合面向对象的风格。但是Ruby的全局变量比其他语言更加随便,因为他不需要在顶层空间中定义,在任何空间中只需要在变量名前面加上$就可以声明一个全局变量,但是在Ruby中完全不建议使用全局变量。

def a_scope

$var = "some value"

end

def another_scope

$var

end

Ruby中通用布尔规则

在ruby中除了nil和false以外,其他的值都是true

命令行参数

ARGV存放了所有的命令行参数

动态语言的作用域规则

for,while,unitle等流程控制结构中,其中声明的变量在流程结构后面还存在,这个跟静态语言的大不相同,但是注意块中变量都是局部的。

并行赋值

@name, @block = name, block

a, b = 1, 2, 3, 4 # a=1, b=2

c, = 1, 2, 3, 4 # c=1

比较操作符


eql?

两个对象的值和类型都必须相等,因此1 == 1.0为true,而1.equ?(1.0)为false

equal?

这是传统的用来比较两个引用的对象是否是同一个,而==则用来比较两个对象是否相等

===

=~

流程控制


for


Ruby中的for语句和Python中的很像。

for i in ['fee', 'fi', 'fo', 'fum']

print i, " "

end

for i in 1..3

print i, " "

end

for i in File.open("ordinal").find_all {|line| line =~ /d$/}

print i.chomp, " "

end

类支持for

只要类实现了each方法就可以支持for语句,yield的参数回传递给for中的迭代变量

class Periods

def each

yield "Classical"

yield "Jazz"

yield "Rock"

end

end

periods = Periods.new

for genre in periods

print genre, " "

end

=》sical Jazz Rock

建议

Ruby中的for语句都是调用对象中的each方法,因此建议不使用for而直接使用额啊传方法来代替。

while


while weight < 100 and num_pallets <= 30

pallet = next_pallet()

weight += pallet.weight

num_pallets += 1

end

until

until和while相反,在开始的时候表达式是true,那么就跳出循环

case


case

when song.name == "Misty"

puts "Not again!"

when song.duration > 120

puts "Too long!"

when Time.now.hour > 21

puts "It's too late"

else

song.play

end

这儿没有匹配,case相当于一个多重if语句

kind = case year

when 1850..1889 then "Blues"

when 1890..1909 then "Ragtime"

when 1910..1929 then "New Orleans Jazz"

when 1930..1939 then "Swing"

when 1940..1950 then "Bebop"

else "Jazz"

end

注意如果不换行,那么必须使用then

类型匹配

case shape

when Square, Rectangle

# ...

when Circle

# ...

when Triangle

# ...

else

# ...

end

if


if count > 10

puts "Try again"

elsif tries == 3

puts "You lose"

else

puts "Enter a number"

end

注意if语句中,最后一个表达式的值是最后的if的结果,因此上面的语句还可以表达成

if count>10

"Try again"

elseif tries == 3

"you lose"

else

"Enter a number"

可以把if语句写到一行上,那么必须在if后面加上then

minimum = if x < y then x else y end

unless

unless==if not

statement modifier

简单来说,就是单行的条件判断

square = square*square while square < 1000

puts "Danger, Will Robinson" if radiation > 3000

打断


1.打断操作符可以用在循环和迭代的块语句中

2.如果和statement modifier合用,那么可以跟简单地表示

break

redo

redo表示把当前的循环再次执行,但是不在计算循环变量,就好像仅仅执行一次一样。

next

then

then在控制结构中是可选的,但是如果判断条件和控制快在一行时必须加上then

三目表达式

cost = duration > 180 ? 0.35 : 0.25

引用测试

o == nil # Is o nil?

o.nil? # Another way to test

Ruby的变量加入规则

在Ruby中,只要在程序中出现了变量的初始赋值,那么这个变量就已经存在于程序中,不论这个赋值是否执行。(这个和传统的想法不同:程序只有在执行赋值时才把变量加入)。

例如下面的赋值:

n = 100 if false

这儿的赋值并没有执行,但是程序空间中已经有这样的一个变量n,这是由于没有赋值,他的值为nil。

注意:

1.对于常量,这个规则有一点不同,因为常量必须有一个初始值,如果向上面的这样,那么常量是一个未初始化状态,引用它会出错

表达式的值

在Ruby中每一个表达式都有一个值,除了While和until没有。

甚至表达式还可以一边返回值,一边抛出异常

if n < 1

raise "argument must be > 0"

elsif n == 1

1

else

n * factorial(n-1)

end

当然,也可以赋值

a = if true then 10 else 20 end



【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 Jeson Orin Nano系列:烧写Ubuntu22.04 电脑主机可以是Ubuntu20.04 阅读详情

相关推荐

组态王通过以太网与西门子S7-200 SMART PLC通讯案例详解

通过以上步骤,我们成功实现了组态王与西门子S7-200 SMART PLC的以太网通讯。这一技术不仅提高了工业自动化系统的灵活性和可靠性,还为初学者提供了一个实用的学习案例。希望本文能帮助您快速掌握组态王与西门子S7-200 SMART PLC的通讯技术。如有任何疑问,欢迎留言讨论!

2401_88785500的博客 2005

Ruby学习笔记-基础语法

#!/usr/bin/ruby -w # puts "test words!" ################Here Document # print <<EOF # 第一种创建here document 的方法。 # 多行字符串,类似前端中的 pre? # EOF # print <<"EOF" # 第二种创建here document 的方法。 # 多行字符串 # EOF ###数据类型 # # print("a".ord) #小写字母a的字符编

郑德帅 793

CSS字体样式全攻略

🧱 让文字有空间感,适合标题或LOGO。🖋️适合插画、创意工作者的个人页面。🔥 适合标题、品牌名,视觉冲击力强。🧘‍♀️适合极简设计、文化类网站。✨适合科技类网站、博客、作品集。🚀适合游戏、AI、科技类项目。🐰 适合儿童类网站或节日氛围。📖适合时尚、生活方式类内容。🌫️ 适合神秘、梦幻主题。🌃 夜店风、科技感十足。具体效果是文字会上下跳动。

dreams_dream的博客 1804

programming ruby 2nd学习笔记

本文是我学习programming ruby 2nd的笔记,由于我熟悉的语言是java,python,所以会在其中夹杂一些ruby与java,python的比较,文中的其他语言一律指java,python。格式按原文的顺序,我只是按我阅读的顺序来更新本文,若没时间,更新会很慢。好像我的电子文档有问题,不少目录结构不正确。第一版序言 Ruby创始人的序言第二版序言 

行云流水 1万+

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2912

Allegro17.4原理图-PCB双向联动技巧:从网表生成到同步高亮

本文深入解析了Cadence Allegro 17.4中原理图与PCB的深度双向联动技巧。核心在于通过精准的网表生成与管理、实时的跨窗口交互高亮与信号追踪,以及元件与封装的智能匹配更新,构建高效协同设计工作流。掌握这些技巧能显著提升高速、高密度电路设计的效率与准确性,实现从逻辑设计到物理实现的无缝衔接。

weixin_29178069的博客 358

Ruby学习笔记(一)---初识Ruby

近日,了解到一门叫做Ruby的脚本语言,一门由日本工程师发明的,面向对象的语言。 简介 Ruby是一种功能强大的面向对象的脚本语言,可以使用它方便快捷地进行面向对象程序设计。与Perl类似,而且Ruby具有强大的文本处理功能,使文本处理变得简单。此外还可以方便地使用C语言来扩展Ruby的功能。 特点 Ruby被称为 “最快的开发语言” ,初步了解,Ruby有以下特点: 解释型执行,方便快捷 Ruby是解释型语言,其程序无需编译即可执行。 语法简单、优雅 语法比较简单,类似Algol系语法。 完全

卢楷方的博客 1182

三维点云转深度图

点云投影过程是将三维点云数据转化为二维图像坐标的关键步骤,它的实现涉及到相机内外参数的计算,包括相机的内部参数(如焦距和主点)和外部参数(如相机位置和方向)。具体来说,可以通过将每个点的三维坐标转换为相机坐标系下的坐标,然后使用相机内部参数和外部参数来计算在二维图像中的坐标。接着计算每个点的深度值,将深度值映射到像素值上,最后创建深度图像并将深度值赋给对应的像素值。这里需要注意的是,在将深度值映射到像素值上时,需要将像素值转换为 uchar 类型,否则在将深度值赋给像素值时会出现类型不匹配的错误。

点云兔子的博客 3171

Ruby学习笔记_索引贴

   学习Ruby也有段时间了,在学习的同时也做了些笔记并发到了园子睐。看到园子里的大虾们在出了一系列文章后都会做个索引贴,这样很方便,所以本人今天抽了个空就把它整理了下,方便自己的同时也方便感兴趣的朋友。 Ruby学习笔记目录:   1、Ruby入门   2、Ruby-循环与选择结构   3、Ruby-String   4、Ruby-Array   5、Ruby-Hash  ...

weixin_30894583的博客 120

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

LVGL core disp显示设计(lv_disp.c)

lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。

Bigan(安)的博客 2331

【Ruby学习笔记】3.Ruby 语法及数据类型

本章介绍Ruby的语法和数据类型。

qq_62052372的博客 551

DCDC电路断电时放电波形发生震荡和电压跳变问题,如何解决?

DCDC电路断电时放电波形发生震荡和电压跳变问题: 做的一个项目需要用单片机ADC采集电压,要让单片机感应到电压降到3.1V开始往FLASH里存数据,单片机2.4V基本上就工作不了,(根据单片机手册的,擦写的时间在40mS在左右)所以3.1V降到2.4V的时间必须要大于40mS岁以上,在单片机VCC处加了一个100nF的电容,理论仿真下来150mS左右发现存不进去,用示波器抓了一下波形,发现放电时震荡很严重,实际3.1V到2.4V时间只有10ms左右,这个肯定存不进去; 请教师傅说是应该时前级DCDC开关电

**My Coding Family** 1968

Ruby学习笔记

Ruby学习笔记链接:http://my4java.itpub.net/ ...

ctpaknc9526的博客 61

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ruby on rails学习笔记一

摘要 rails是使用了ruby语言开发的web应用框架,目的是通过解决快速开发中的共通问题,简化web应用的开发。本文参考:https://ruby-china.github.io/rails-guides rails哲学包含两大指导思想: 1、不要自我重复(DRY),DRY是软件开发中的一个原则,意思是“系统中的每一个 功能都要具有单一、准确、可信的实现”,不能重复表述同一件事情,写出...

weixin_42297518的博客 687

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Ruby学习笔记-高级教程:方法、类、正则

=begin 1.类 =end # class Box # def initialize(w,h) # #给实例变量赋值 # @width,@height = w,h # print "宽,高:",@width,@height # end # end # box = Box.new(w = 100,h = 200) =begin 访问器(getter) & 设置器(setter)方法 -end # # 定义类 # class Box # # 构造函数 # def

郑德帅 438

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ruby学习笔记之一:ruby概述

 Ruby的历史:Ruby语言的发明人是日本人松本行弘(Matsumoto Yukihiro),大家亲切的称呼他"Matz"。可能会出乎大家的意料,Ruby并不是一种近年来才诞生的语言,它的历史可以追溯到1993年,Ruby之父Matz开始对脚本语言感兴趣。在通过一些分析和思考之后,Matz认为脚本语言是可以变得很强大和灵活的,于是他准备把脚本语言作为他的发展方向。 和很多人一样,Matz是一

fuliangliang的Blog 2684

ruby学习笔记

ruby学习笔记(1)      摘要: 发现了这个学习ruby的好地方,每天就尽量抽点时间学习一下吧。  阅读全文 ruby学习笔记(2)      摘要: 这节课的内容明显多了,哈哈......  阅读全文 ruby学习笔记(3)      摘要: 迈开学习ruby的大步.......  阅读全文 ruby学习笔记(4)      摘要: 学习ruby的第4课......

weixin_34273481的博客 150

《Ruby》学习笔记

前言 笨办法学Rubyearnrubythehardway.org 进入下面这些网站bitbucket.org、github.com、gitorious.org、launchpad.net、sourceforge.net,搜索“Ruby”,阅读代码

杰之行的博客 363

Ruby学习笔记(1)

是一个完美的面向对象语言。使用 Ruby 的语法比使用 Smalltalk 的语法要容易得多。

Donics的博客 1866

ruby 学习笔记总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34311757的博客 179
上一篇: Ruby学习笔记一之概要
下一篇: Ruby学习笔记之函数
ssjssh
博客等级 码龄15年 12粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值