首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ruby语言中“_”(下划线)的奇怪行为

在Ruby语言中,下划线(_)有一些奇怪的行为。下划线在Ruby中有多种用途,具体取决于上下文和使用方式。

  1. 在赋值语句中,下划线可以用作一个占位符,表示不关心的变量。这意味着你可以忽略某个变量的值,而不会引发未使用变量的警告。例如:
代码语言:ruby
复制
first_name, _, last_name = ["John", "Doe", "Smith"]
puts first_name # 输出 "John"
puts last_name # 输出 "Smith"

在这个例子中,我们使用下划线来忽略"_"所代表的中间变量的值。

  1. 在数字中,下划线可以用作分隔符,提高数字的可读性。例如:
代码语言:ruby
复制
number = 1_000_000
puts number # 输出 "1000000"

在这个例子中,下划线用作千位分隔符,使得数字更易读。

  1. 在方法命名中,下划线通常用作约定,表示该方法是私有方法或者是内部实现细节。这是一种命名惯例,并没有特殊的语义。例如:
代码语言:ruby
复制
def calculate_sum
  # 私有方法实现
end

def public_method
  # 公共方法实现
end

在这个例子中,calculate_sum方法使用下划线作为约定,表示它是一个私有方法。

总结起来,下划线在Ruby中有以下用途:

  • 在赋值语句中,作为占位符忽略不关心的变量。
  • 在数字中,作为分隔符提高数字的可读性。
  • 在方法命名中,作为约定表示私有方法或内部实现细节。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

delete奇怪行为

delete奇怪行为分为2部分: // 1.delete用defineProperty定义属性报错 // Uncaught TypeError: Cannot delete property 'value...但规则是这样,所以奇怪行为1是合理 占位初始值 猜测如果属性已经存在了,defineProperty()会收敛一些,考虑一下原descriptor感受: var obj = {}; obj.value...环境(比如onclick属性值执行环境,函数调用创建执行环境)和eval环境(eval传入代码执行环境) 变量对象/活动对象 每个执行环境都对应一个变量对象,源码里声明变量和函数都作为变量对象属性存在...) P.S.变量对象与活动对象这种“玄幻”东西没必要太较真,各是什么有什么关系都不重要,理解其作用就好 eval环境特殊性 eval执行环境中声明属性和函数将作为调用环境(也就是上一层执行环境)变量对象属性存在...,能不能删可能只是configurable一部分) 遵循规则是:通过声明创建变量和函数带有一个不能删天赋,而通过显式或者隐式属性赋值创建变量和函数没有这个天赋 内置一些对象属性也带有不能删天赋

2.3K30

从Ndom浅谈语言中进制

其计数系统非常有意思,比如6进制而只有18、36为独立词汇,而其他诸如12等使用乘来表示。而有趣计数系统觉得不止Ndom语言一种,事实上在使用范围广言中也或多或少有这样现象。...然而70、80、90确是有自己:septante、huitante或octante、nonante。而很多法语国家推荐使用后者,只不过法国本土不这么用而已。 欧洲奇怪进制还真不少。...而他们使用和之前om\on相同。根据这个猜测,不难发现纳瓦特尔应该是20进制(20^2=400、20^3=8000)。...(13)中,纳瓦特尔部分高位是yë-tzontli,而阿兰姆巴ndamno应该是6n次方(≥4)。因为65次方已经是7776了,所以很明显ndamno是6^4=1296。...根据规则,纳瓦特尔494就是1*20^2+4*20+10+4即cen-tzontli-on-näuh-pöhualli-om-mahtlactli-on-nähui;阿兰姆巴569应该是2*6^

11.1K20
  • taskscheduler java_java – taskScheduler池奇怪行为「建议收藏」

    我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一应用程序,其中包含用于处理警报部分代码,而应用程序B是一个仅处理警报新专用应用程序.这里目标是打破小应用程序中...threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true); threadPoolTaskScheduler.setPoolSize(100); return threadPoolTaskScheduler; } } 昨天,我经历了一个奇怪行为...已检测到警报并将其发送到新应用B – >好 >应用程序B收到警报并开始根据taskScheduler处理它 – >好 >第一步已由应用程序B处理 – >好 >第二步已由应用程序A处理 – > NOK,奇怪行为...对我来说,每个taskScheduler都附加到创建它应用程序.我哪里错了?...UPDATE 我有一个发出警报真实盒子.这些警报必须由新应用程序处理.但我还有旧盒子没有迁移到新系统.所以我在两个不同项目中有处理代码.

    1.8K10

    Django 1.2标准日志模块出现奇怪行为解决方案

    在 Django 1.2 中,标准日志模块有时会出现意想不到行为,例如日志消息未按预期记录、日志级别未正确应用或日志格式错乱等。...下面是一些常见问题排查方法和解决方案。1、问题背景在 Django 1.2 中,使用标准日志模块记录信息时遇到了一个奇怪问题。有时候它可以正常工作,而有时候它却无法记录信息。...,我们发现问题出现在 uploader/views.py 中 get_thumblist 函数中。...,其中 logger 是一个 logging.getLogger() 函数返回日志对象。...successful​ # Get the video directory dir_path = os.path.dirname(f.file以上方法可以帮助解决 Django 1.2 中标准日志模块异常行为问题

    9310

    Python 数值中下划线是怎么回事?

    花下猫:Python 中下划线用法令人叹为观止,相信你已在各种文章或教程中见识过了。在 2016 年 3.6 版本之后,Python 还引入了一种新语法,使得下划线也可以出现在数值中。...现有的技术 那些允许下划线分组语言,实现了大量放置下划线规则。在语言规范与实际行为相矛盾情况下,以下会列出实际行为。(“单个”或“多个”指的是允许多少连续下划线。)...,仅在数字间 [7] Julia:单个,仅在数字间(但不含浮点指数部分) [9] Perl 5:多个,基本是任意位置,尽管文档说数字间限制 1 个下划线 [3] Ruby:单个,仅在数字间(尽管文档说...在其它语言中,常见规则包括: 只允许一个连续下划线,并且只能在数字之间。 允许多个连续下划线,但只能在数字之间。...虽然字符串是一种结合相邻字面量先例,但这种行为可能会导致意外效果,而下划线则不会。而且,除了那些基本会忽略任何空格语言外,没有其它语言使用此规则。

    98300

    Ruby言中常用命令行应用框架和解析器

    这是一些Ruby言中常用命令行应用框架和解析器,它们可以帮助你快速开发命令行工具。 Clamp Clamp是一个命令行应用框架,提供了简洁DSL,可以快速定义命令行选项和参数。...它还支持嵌套命令和自动生成帮助文档。Clamp适用于快速构建简单命令行工具。 cmdparse cmdparse是一个支持复杂选项解析和子命令高级命令行解析器。...Commander Commander是一个完整Ruby命令行解决方案,提供了可扩展DSL和自定义帮助文档生成器。它还支持子命令和自动补全。...Main适用于快速构建简单CLI工具,例如小型工具或脚本。 Optimist Optimist是一个命令行选项解析器,提供了简单DSL和可定制错误消息。...Slop Slop是一个简单且轻量级选项解析器,提供了简单DSL和自定义错误消息。它适用于快速构建简单CLI工具,例如小型工具或脚本。

    27720

    邪恶编码魔咒,你中招没?

    下面是我最喜欢内容,是一些令人感到惊讶、搞笑内容,还有一些像是魔咒。一般来说,使用这些有着特殊行为代码被认为是邪恶,因为你代码不应该给人带来惊讶感觉。...但这样奇怪做法远比你在其他人标准头文件中用#define true false少得多。 Java和Python语言中不可思议表现 对于Java程序员来说,“==”运算符语义常常令人感到困惑。...更令人称奇是,python语言也有同样行为。 即使变成负值,结果也是一样。 相同实例代码中,python语言解释器整数区间下限似乎是-5。...在[-5, 256]范围内整数区间得到了相同ID值,这样就更奇怪了。 似乎使用破坏性赋值会对既有规则有所改变。我不知道为什么会是这样,实际上我遇到过一个堆栈溢出问题并试图去理解它。...令人感到惊奇是,事实上很多编程语言数组索引都是从1开始Ruby言中0值是true ……也只有Ruby语言。

    93570

    Ruby Programming | 连载 02 - Ruby 语法基础

    一、Ruby 基本语法 Ruby 基本语法中包含了 Ruby 基本运算符、I/O、控制流以及 Ruby特殊对象和注释。...Ruby言中包含特殊对象如下: 操作 栗子 说明 默认对象 self self 关键字引用默认对象。self 是一个依赖于运行时上下文表示不同对象角色。...变量命名规范 Ruby 局部变量 命名以 小写字母或者下划线开头,包含了字母、下划线和数字。name、str、age、first_name、lastName 都是有效命名方式。...但是在组合单词命名局部变量时,Ruby 通常约定使用下划线来作为命名规范,而不是驼峰命名法;Ruby 中推荐使用 first_name 而不是 firstName。...中常量通常以大写字母开头,如 Name、Age 等;Ruby 常量命令规范中,常量名由多个单词组成可以是使用驼峰命名法(FirstName)也可以使用下划线命名,使用下划线必须要下划线分割所有单词首字母大写

    5.9K10

    Python语言学习基础:魔术方法定义、迭代器与生成器、常用魔术方法及其分类型介绍

    目录 前言 魔术方法定义 迭代器与生成器 常用魔术方法 按类型介绍魔术方法 结束 参考文献 摘要:本文就来详细介绍Python语言中魔术方法,其中包括魔术方法定义、迭代器与生成器概念、常用魔术方法以及按类型分类介绍...魔术方法定义 先来了解魔术方法,在Python语言中魔术方法是以双下划线(__)开头和结尾特殊方法,这些方法在对象创建、操作和销毁等过程中被自动调用,从而实现对对象控制和定制。...而且魔术方法具有特殊命名规则,如__init__用于对象初始化,__str__用于对象字符串表示等。通过定义和实现这些魔术方法,我们可以自定义对象行为和特性。...,我们将能够更好地定制和控制Python对象行为,从而提高代码灵活性和可读性。...结束 通过本文对Python语言中魔术方法定义、迭代器与生成器概念、常用魔术方法以及按类型分类详细介绍,魔术方法可以让我们在对象创建、操作和销毁等过程中实现自定义行为和特性,通过理解和掌握这些基础知识

    60944

    ​Python 为什么要推荐蛇形命名法?为什么不用驼峰命名

    但是面对Python 蛇形命名,感觉非常怪异。特别是前后端配合时候,Python属性都是下划线,JavaScript 解构赋值时候,命名会发生冲突。...编程语言中出现这些情况时,它们基本上跟英语表达习惯是相同。但是,编程语言为了令变量名表达出更丰富含义,通常需要使用多个单词或符号。...Python 从 C 语言中借鉴过来后,给它起名为“lower_case_with_underscores”,即带下划线小写命名。...直到 21 世纪初几年,在 Intel 和 Ruby 社区中,才有人开始以“snake_case”即蛇形命名来称呼它。...比如类似于 xx、__xx、xx_、__xx_ 等等写法就随处可见,甚至还有孤零零一个下划线 _ 作为变量特殊情况。这样看来,下划线作为单词间连接,恰恰是这种传统习惯一部分。

    1.9K30

    Python 为什么推荐蛇形命名法?

    编程语言中出现这些情况时,它们基本上跟英语表达习惯是相同。 但是,编程语言为了令变量名表达出更丰富含义,通常需要使用多个单词或符号。...Python 从 C 语言中借鉴过来后,给它起名为“lower_case_with_underscores”,即带下划线小写命名。...直到 21 世纪初几年,在 Intel 和 Ruby 社区中,才有人开始以“snake_case”即蛇形命名来称呼它。...维基百科上统计了一份清单,可以看出 Python 对它偏好: 其次,还有一个比较重要原因,那就是 Python 对下划线“_”独特偏爱。...比如类似于 _xx、__xx、xx_、__xx__ 等等写法就随处可见,甚至还有孤零零一个下划线 _ 作为变量特殊情况。这样看来,下划线作为单词间连接,恰恰是这种传统习惯一部分。

    1.6K20

    谷歌翻译竟预言世界末日,专家解密神经翻译6大难题

    reddit上TranslateGate子论坛上有用户推测,其中一些奇怪翻译输出可能来自收集自电子邮件或私人消息文本。...Rush说,更有可能是,这些奇怪翻译与2016年时谷歌翻译一个重大变化有关——它开始使用一种叫做“神经机器翻译”技术。...他还指出,这些产生最奇怪结果语言——索马里、夏威夷和毛利——它们用于训练翻译文本比英语或汉语等更广泛使用语言要小得多。...Rush也同意这种说法,如果谷歌使用《圣经》来训练它神经翻译模型,那么就可以解释一些奇怪输出了。事实上,索马里几个奇怪翻译版本与《旧约》中某些章节很相似。...在NMT系统中,除了源语言中动词之外,目标语言中动词也可以作为主语和宾语成分。 6.难以控制翻译质量:每个单词都有多种翻译,典型机器翻译系统在源句翻译结构上表现很好。

    68720

    Python 为什么推荐蛇形命名法?

    编程语言中出现这些情况时,它们基本上跟英语表达习惯是相同。 但是,编程语言为了令变量名表达出更丰富含义,通常需要使用多个单词或符号。...Python 从 C 语言中借鉴过来后,给它起名为“lower_case_with_underscores”,即带下划线小写命名。...直到 21 世纪初几年,在 Intel 和 Ruby 社区中,才有人开始以“snake_case”即蛇形命名来称呼它。...其次,还有一个比较重要原因,那就是 Python 对下划线“_”独特偏爱。...比如类似于 _xx、__xx、xx_、__xx__ 等等写法就随处可见,甚至还有孤零零一个下划线 _ 作为变量特殊情况。这样看来,下划线作为单词间连接,恰恰是这种传统习惯一部分。

    1.6K20

    大四学生开发AI代码补全神器:支持23种语言及5大编辑器

    这是一个大四学生第一桶金,且含金量超高! 现在大学生能有多厉害?一个加拿大大四学霸,利用业余时间,开发了一款叫做Deep TabNine代码补全工具,赚到了第一桶金,且含金量非常高。 ?...支持语言:Java、C++、Haskell、vaScript、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、OCaml、Scala、Kotlin、...以及棒在:Deep TabNine会根据你以前编码习惯自动补全,还会在后面给出几个选项概率。如果之前项目出现过类似代码,还能在补全候选框中直接给出地址,方便用户点击进去查阅! ?...训练期间,模型学习了例如动态类型语言中类型推断等复杂行为,用这样训练方式预测token。 TabNine可以使用传统工具难以获取琐碎线索。...当线索不够时候TabNine可能会胡言乱,然而一旦拥有足够线索,就能准确预测出代码,甚至还可以给出匹配概率。 ? ? 该模型还使用以自然语言编写文档来推断函数名称,参数和返回类型: ?

    1K10

    2018年伊始,系统编程语言Rust为何令程序员感到兴奋?

    当发现一个从未听说过奇怪事情需要使用时(程序头文件中vaddr字段),它就在那里!它被称为vaddr,这与C语言结构中调用是一样。...在Rust中,可以控制程序每一个方面—确切地知道系统调用它做什么,它分配内存,它休眠了多少微秒—一切。在C语言中可以做任何事情,都可以在Rust中做。...Rust就像我超级英雄语言!如果想做一些奇怪系统魔法东西,用Rust是可能。也许不容易,但可能! bindgen和宏是惊人 已经写过关于bindgen和宏博客文章,但想再谈谈它们!...Rust是为C / C ++专家而设,他们希望有更好关于未定义行为编译时间保证。 Rust适用于那些希望编写安全系统代码的人,这些代码可以避免缓冲区溢出和其它未定义行为。...Rust能够为不同群体提供服务是令人兴奋,就像Rust适合那些希望能够编写C / C ++但是又发现这些语言很难的人们一样,Rust 也适合希望从他们系统编程语言中得到更多C / C ++专家。

    4.6K100

    Python面向对象编程(下)

    标签:Python 本文前面的内容参见:Python面向对象编程(上) 面向对象关键概念/构建块 下面的5个主题是理解Python或任何语言中面向对象编程关键概念。...在Python中,向用户隐藏内容方法是在def之后使用下划线前缀,_或者__,注意,内置__init__有双下划线前缀。单下划线表示部分隐藏,双下划线表示完全隐藏。...继承与组合 这些OOP构建块与共享其他对象行为和能力对象相关,它们用于对象之间具有层次关系情况。 当对象也是另一种类型对象时使用继承,例如轿车是一种汽车。...Python中面向对象编程——一切都是一个对象 汽车、自行车、车轮、问候……在面向对象编程中,一切都可以是对象。...假设我们可以: 1.平衡抽象对象工作方式 2.封装内部细节 3.从相似对象继承行为 4.将较小对象组合成较大对象,以及 5.对实现进行变形,以跨各种对象使用类似的功能。

    31020

    JavaScript模式匹配未来

    免费体验 Gpt4 plus 与 AI作图神器,我们出钱 体验地址:体验 今天,揭开一个令人兴奋功能面纱,这个功能通常在 Elixir 这样函数式编程语言中看到,现在被提议用于 JavaScript...这里有一个超基础函数叫做 greet,它接受一个带有'ID'和'role'用户,并根据用户角色返回问候。听起来简单吗?...default: throw `Invalid role: ${role}`; } } switch 还可以,但这里我们遇到了一个问题--如果不使用一些奇怪黑客手段...不再有 if或 switch clutter - 只有一个简洁而干净表达式。这不仅允许更易读和可维护代码,而且为基于输入属性更简单“行内”决策铺平了道路,使条件、行为和结果非常容易同时阅读。...通过直接从Elixir这样其他语言中获取关键想法,并与JavaScript强大灵活性结合,我们肯定可以为“JavaScript之家”增加一个顶石。

    10410

    译|你不知道CSS国际化

    在大多数情况下,你会使用像 zh 这样两个字母代码来表示中文,但中文(在其他语言中,如阿拉伯)被认为是由许多语言组成大语言,其中有更多主语子标记。...有些人可能想知道从右到左语言,如阿拉伯、希伯来或波斯(仅举几例),以及CSS是否也适用于这些文字。 简而言之,CSS不应该用于双向风格设计。...CSS文本修饰模块第4级介绍了 text-decoration-skip,该控件控制跨过字形上划线和下划线绘制方式。...再有,某些事情在英语等语言中发生频率较低,但是在很大程度上影响了诸如缅甸这样文字美观性。 字体变化 有两类用于访问OpenType功能CSS属性,即高级属性和低级属性。...有141个特征标签,从可选分数到对齐,从可选Ruby表示法到割零。这些CSS属性与字体文件本身功能密切相关,因此,外部依赖性取决于你选择字体。

    1.6K10

    juila(0)

    emmmm,有点迷 ---- 首先,这是一门所谓有主流语言优点一门“贪心”语言: Julia[插图]是一种为高性能数值计算设计高层次动态编程语言,在分布式并行化、精确数值计算等方面提供了独具特色支持...Julia语言更多特点还有: ❑ 多态分发(Multiple Dispatch)机制,通过不同类型参数组合,可以定义同名函数不同行为。...计算机语言怎么说呢?2^2,怎么说?是不是很奇怪,是的。因为计算机里面的这个x就是x而已。你说怎么办呢?没什么办法,我就是不喜欢它。但是julia不一样 ?...语言中各种要素,包括关键字、类型、变量、函数等,都需要有标识名字。在Julia中创建这些要素时,需要遵循Julia在命名方面的规则: ❑ 内置关键字可以是名称一部分,但不能作为完整名称。...❑ 名称首字符必须是下划线、英文26个字母小写或大写,或者编码大于0x00A0Unicode字[插图](这是Julia不同于其他语言地方)。

    1.6K20

    python中那些双下划线开头得函数和变量

    :避免用下划线作为变量名开始。...因为下划线对解释器有特殊意义,而且是内建标识符所使用符号,我们建议程序员避免用下划线作为变量名开始。一般来讲,变量名_xxx被看作是“私有 ”,在模块或类外不可以使用。...以单下划线开头_foo代表不能直接访问类属性,需通过类提供接口进行访问,不能用from xxx import *而导入;以双下划线开头__foo代表类私有成员;以双下划线开头和结尾__foo...由于 bytes 类型引入而从 Python 3 开始出现。行为方式与迭代器类似的类序号目的所编写代码Python 实际调用①遍历某个序列 iter(seq) seq....可在 with 块中使用类with 块定义了 运行时刻上下文环境;在执行 with 语句时将“进入”该上下文环境,而执行该块中最后一条语句将“退出”该上下文环境。

    6610
    领券