打散列

2024-01-21

  • 哈希上的 splat 将其转换为数组。

    [*{foo: :bar}] # => [[:foo, :bar]]

    这里是否存在一些隐藏机制(例如隐式类转换),或者它是内置的原始功能?

  • 除了数组之外,还有nil并哈希唯一在 Ruby 1.9 下使用 splat 运算符消失/改变的东西?


splat 将尝试将对象显式转换为数组。

为此,它将发送to_a并期望Array因此。

class Foo
  def to_a
    [1,2,3]
  end
end

a, b, c = *Foo.new
a # => 1

如果对象没有响应to_a,则没有效果,例如[*42] == [42]

许多内置类实现to_a。尤其:

  • (because they include Enumerable)
    • Array
    • Hash
    • Range
    • IO and File
    • Enumerator
    • Enumerator::Lazy(红宝石2.0)
    • Set and SortedSet
  • (additional classes)
    • NilClass
    • MatchData
    • OpenStruct
    • Struct
    • Time
    • Matrix and Vector

所有这些都可以这样说:

match, group, next_group = *"Hello, world".match(/(.*), (.*)/)
group # => "Hello"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打散列 的相关文章

随机推荐

  • 连接故事板中 Cell Prototype 的插座

    我是故事板的新手 所以我遇到了一些困难 我已经创建了一个 TableViewController 我想自定义单元原型 在单元格原型中 我添加了几个标签 我想用我自己的继承自 UITableViewCell AreaListCell 的类进行
  • 正弦 180 的值为 1.22465e-16

    我想在ios4中实现一个正弦和余弦计算器 if operation isEqual sin operand operand M PI 180 0 operand sin operand 该代码为我提供了 0 到 90 之间的值的正确答案 当
  • socket.io - 为一个套接字获取多个字段?

    当用户断开连接时 我有以下代码 我想发出带有房间名称和用户名的信号 client get nickname function err name client get room function err2 room io sockets in
  • 如果启用静态压缩,IIS 中的 gzip js 不会被压缩

    我已经使用 Squishit 来缩小和捆绑 JS 并压缩捆绑文件我在 IIS 7 5 中启用了选项 启用静态内容压缩 问题是 Js 没有被压缩 我只是得到缩小的 js 但如果我启用动态内容压缩 那么 Js 就会被压缩 现在动态压缩的问题是它
  • scanf从一个输入读取多种数据类型

    所以我试图读入以下形式的方程mx b y 我该如何使用scanf读取多种数据类型 我尝试过使用类似的东西 scanf d c c d c d num1 variable sign num2 equal sign num3 在这种格式下 它读
  • 如何在Keycloak中创建脚本映射器?

    我需要在 Keycloak 中创建一个 Script Mapper 类型的协议映射器 该脚本应该获取用户属性 检查其大小 并将其放在令牌上 我没有找到有关如何创建脚本的文档或示例 从我收集到的零碎信息来看 我想脚本需要看起来像这样 var
  • Windows 10 CLI 终端中的“git log”输出编码问题

    Problem 我怎样才能使git log命令输出是否正确显示在 Windows CLI 终端中 Example 正如您所看到的 我可以正确输入变音字符 但是git log 输出以某种方式被转义 根据UTF 8编码表 http www ut
  • Android Gradle 如何为 Android 构建 Google API 4.2.2 而不是 Android 4.2.2

    是否可以使用 gradle 为 Android Google APIs SDK 构建而不是通用的 Android SDK 我的项目中需要 Google Maps API 因此我需要更改构建目标 我只能找到构建版本为 17 的示例 编译SDK
  • Keras 代码有问题 Q-learning OpenAI 健身房 FrozenLake

    也许我的问题会显得很愚蠢 我正在研究 Q learning 算法 为了更好地理解它 我正在尝试重新制作 Tenzorflow 代码这个结冰的湖 https medium com emergent future simple reinforc
  • 如何使用 Swift 2.0 和反射获取属性名称及其值?

    给定这个模型 public class RSS2Feed public var channel RSS2FeedChannel public init public class RSS2FeedChannel public var titl
  • 具有两种方式绑定的 Angular 4 单元测试形式。从视图更新模型时出现问题

    我偶然发现了一个奇怪的问题 我正在使用基于模板的表单和双向绑定执行单元测试 这是测试代码 describe Template Forms Input gt beforeEach gt TestBed configureTestingModu
  • 不希望 netbeans 调试器进入反汇编窗口

    我使用 NetBeans IDE 7 4 内部版本 201310111528 进行 C 编程 每次我调试程序时 对于每个 printf 和 scanf 或者可能每个系统调用 它都会打开反汇编窗口并遍历每个汇编代码 我只是想观察变量 与此类函
  • 在 iOS 4 中本地化应用程序图标

    好吧 这个让我发疯了 我已经使用 InfoPlist strings 和特定于语言的 CFBundleIconFile 值对我的应用程序图标进行了本地化 为每种支持的语言选择不同的图标 从 iOS 4 开始 这种方法不再有效 我正在努力寻找
  • PyQt:在运行时翻译模块字符串

    字符串在QObjects 在运行时翻译 如果翻译器发生变化 所有这些字符串都会刷新 但是 在模块级别声明的字符串甚至静态类属性都会在导入时进行翻译 我可以看到 3 种允许翻译模块字符串的方法 但其中没有一种让我完全满意 安装翻译器后导入模块
  • 在PowerShell中从绝对路径获取相对路径

    问题 您有一个绝对路径 但您希望它相对于另一个路径 Example P SO data database txt gt Now we want the filename to be relative to P SO team lists d
  • 在非焦点 ToolStripItem 上显示工具提示

    当您将鼠标悬停在 ToolStripItems 上时 它们会显示活动突出显示 即使它们所在的表单未处于焦点状态 但是 除非表单获得焦点 否则它们不会显示工具提示 我见过ToolStrip 点击通过 黑客 http blogs msdn co
  • kubectl 无法从私有存储库中提取镜像

    我正在运行 kubeadm alpha 版本来设置我的 kubernates 集群 我正在尝试从 kubernates 提取托管在 nexus 存储库中的 docker 镜像 当我尝试创建一个 Pod 时 它每次都会给出 ImagePull
  • 低延迟模式与 Linux 串行端口一起使用是否安全?

    在 Linux 串行端口上使用 low latency tty 模式是否安全 这tty flip buffer push https github com torvalds linux blob master drivers tty tty
  • 在 Windows Phone 8.1 中使用加速度计传感器数据在画布上绘制线条

    我正在根据设备移动在画布上绘图 我想根据移动移动在画布上绘制不同的字符 目前它正在工作 但我想找到时间差 并且我想检测暂停 暂停意味着用户没有尝试绘制并且用户没有移动手机 因此应用程序可以假设现在用户想要绘制下一个字符 如何找到加速度计值的
  • 打散列

    哈希上的 splat 将其转换为数组 foo bar gt foo bar 这里是否存在一些隐藏机制 例如隐式类转换 或者它是内置的原始功能 除了数组之外 还有nil并哈希唯一在 Ruby 1 9 下使用 splat 运算符消失 改变的东西