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

Ruby:调用函数时得到TypeError.发生了什么?

在Ruby中,当您尝试调用一个函数时,如果传递的参数类型与函数定义中的参数类型不匹配,则会抛出TypeError。这意味着您传递的参数类型与函数期望的类型不符。为了解决这个问题,您需要检查您传递的参数类型并确保它们与函数定义中的参数类型匹配。

例如,假设您有以下函数定义:

代码语言:ruby
复制
def add_numbers(a, b)
  a + b
end

在这个例子中,函数add_numbers接受两个参数ab。如果您尝试调用此函数并传递一个整数和一个字符串,如下所示:

代码语言:ruby
复制
add_numbers(1, "2")

您将收到一个TypeError,因为字符串不能与整数相加。为了解决这个问题,您需要确保传递正确的参数类型,例如:

代码语言:ruby
复制
add_numbers(1, 2)

在这种情况下,您将不会收到TypeError,因为两个参数都是整数。

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

相关·内容

创建子类对象,父类构造函数调用被子类重写的方法为什么调用的是子类的方法?

public static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建...A对象的时候父类会调用子类方法?...但是:创建B对象父类会调用父类的方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...当子类对象创建,会先行调用父类的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。 但是:由于java语言是静态多分派,动态单分派。...其结果是当编译的时候,父类构造方法调用的方法的参数已经强制转换为符合父类方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。

6.1K10

【前端】:对象、原型、继承

运算符 new 2.5. .constructor 属性不可靠 2.6. instanceof 的本质是什么? 3. 模拟类式继承的常见方法 3.1....几乎所有的对象在创建 [[Prototype]] 属性都会被赋予一个非空的值。 2.1. Object.prototype [[Prototype]]的尽头是哪里?...函数本身并不是构造函数,然而,当你在普通的函数调用前面加上 new 关键字之后,就会把这个函数调用变成一个“构造函数调用”。实际上,new 会劫持所有普通函数并用构造对象的形式来调用它。...——《你不知道的 JavaScript (上卷)》p150 换句话说,在 JavaScript 中对于“构造函数”最准确的解释是,所有带 new 的函数调用。...2.6. instanceof 的本质是什么? JavaScript 中,instanceof 操作符的左操作数是一个普通的对象,右操作数是一个函数

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

    这些都是个别相对较小的烦恼,但是当它们中的大部分问题被解决后,这对使用语言的体验确实产生了很大的积极影响。...程序中有这个函数get_bss_section。它非常简单—它只是遍历ELF文件的所有二进制部分,并返回称为.bss段的头文件。...可以在程序里用.clone()搜索每个地方 ,并对它们进行审计—这个函数是否被调用了很多次?应该担心吗?刚刚查过程序中使用clone()的每一个地方,在程序开始的时候,只调用一次或两次。...在Rust中,可以控制程序的每一个方面—确切地知道系统调用它做什么,它分配的内存,它休眠了多少微秒—一切。在C语言中可以做的任何事情,都可以在Rust中做。...而当提出一个新的Ruby版本(如2.5.0),其内部的API发生了变化,编译器说:“嘿,你的旧代码与Ruby 2.4的结构一起工作,现在不能编译,你必须处理这个问题”。

    4.6K100

    《Java从入门到失业》第一章:计算机基础知识(1.3):程序语言简介

    所以压根没人真正搞得清楚 small talk 是什么意思。...程序员到处都采用它,这样,他们看各种视频和工作读xkcd漫画的时候就有借口可找了。...1995 Ruby 编程过程中存在很多不必要的琐碎时间,导致松本行弘不是很高兴,他注意到其他程序员也不是很高兴。于是,他创建了 Ruby 来让程序员高兴。...主函数就相当于复杂问题,子函数就相当于小问题,一级一级往下细化。在面向过程的思维里,算法是第一位,数据是第二位的。       ...它只认识 ***.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。

    35410

    Ruby vs Elixir | 2022 该选哪个?

    的优点并在 Ruby 指向创造一个完全不同的语言,构建于 Erlang 虚拟机上来解决并发限制的问题,Elixir 的构想诞生了。...函数式编程 Elixir 是函数式编程语言,而 Ruby 是面向对象编程语言(也支持函数式编程)。以这种方式理解这两种编程范式的差异可能会有些困难。...相对较小的生态 上面提到 Elixir 虽然可以调用 Erlang,但是即便对老手来说,构建 Elixir 项目依然会从零开始。...Ruby 的优势 高效并使人愉快的一门语言 在创建 Ruby ,松本幸弘的目标是构建一种让开发者乐于使用的编程语言. Ruby 简洁的语法显然有助于开发者阅读和编写代码。...优秀的框架:Ruby on Rails 大多数人听到 Ruby ,立刻想到 Ruby on Rails — 这也证明了框架在语言中的地位。

    1.6K10

    我终于逃离了 Node

    在那段 1-2 秒的空档期里,什么东西都没回来。 我们把过错归结为自己过早用上了新技术。但我不知道过去的几年中这种事情是否发生了很大变化。...我认为一个不错的观点是红蓝函数的理念。在 JavaScript 中,红色函数(异步)可以调用蓝色函数(同步),但反过来是不行的。这两种调用的语法也不同。...在我的脑海中,我的程序处于一个 3 维平面上,“在这里”的一个文件里的函数调用“在那里”的一个文件中的函数。...当然,你最后会得到一些用起来非常愉快的独特体验。 像 Elixir 和 Ruby 之类的语言都是创造的行为。例如 Ruby 就只有一位创造者和设计师(Matz)。...你从第一次接触该语言就可以感受到他的感情。它很友好,用起来很舒服,什么内容都适得其所,有理有据。Ruby 的最小惊讶原则让一切都井井有条。

    50830

    【RTOS训练营】上节回顾、轻量级队列、轻量级事件组和晚课提问

    问: 轻量级信号量的发送函数一直发送,加满了会怎样? 答: 信号量是一个整数,什么叫做加满了? 那加到整数的最大值,然后溢出变为0 2....**答:**有影响 假设一种情况: 1.task1出通知值:(1<<0) 2.task2出通知值:(1<<1) 现在通知值:0x3 3.目标任务是task3,得到了通知值0x3,它知道:发生了bit0...、bit1事件 4.task3都不清除事件:入口、出口处都不清除 5.task3再次等待通知 6.task1出通知值:(1<<0) 因为没有清除通知值,他仍然是0x3 7.目标任务是task3,得到了通知值...答: 参考项目3的10-3:异常处理深入分析_保存现场 1.发生中断 2.LR保存中断处理完后的返回地址 3.调用中断函数前,LR保存进栈 4.LR被替换位一个特殊的值,硬件去设置LR寄存器 5.调用中断处理函数...因为重新开中断,就是恢复basepri 2.为什么在任务里,关中断之前不需要记录basepri?

    43220

    敏捷史话(五):敏捷已逝 —— Dave Thomas

    “敏捷是什么” 早在2001年春,Dave 参加了发布《敏捷宣言》的雪鸟会议,成为了《敏捷宣言》的17个作者之一。...尽管过程稍显繁琐,但长时间摸索下来,Dave 发现编程十分符合他的大脑逻辑,这种极具创造性和精确性的体验,让 Dave 自此一不可收拾地爱上了编程。...诸如此类的建议不仅得到了很多程序员的肯定,也确实令开发过程得到了有效改进。为了把这些敏捷实践过程中的建议与技巧整理下来,他们辞掉了当时的工作,花费了一年半左右的时间整理成了一本书。...在刚开始接触,尽管 Ruby 社区人很少,但 Dave 抱着交朋友的心态经常参加 Ruby 大会,并乐在其中。...十年间,软件行业发生了翻天覆地的变化,《程序员修炼之道》作为十年前的出版书籍,虽然案例看起来古老了一些,但背后的概念仍然具有很多现实意义。

    45330

    画说 Ruby 与 Python 垃圾回收

    既然是"Ruby Python"大会,我觉得对比一下Ruby和Python的垃圾回收机制应该会很有趣。在此之前,到底为什么要计较垃圾回收呢?毕竟,这不是什么光鲜亮丽激动人心的主题,对吧。...可用列表 当我们执行上面的*Node.new(1)*Ruby到底做了什么Ruby是如何为我们创建新的对象的呢? 出乎意料的是它做的非常少。...Lisp不仅是最早的函数式编程语言,在计算机科学领域也有许多创举。其一就是利用垃圾回收机制自动化进行程序内存管理的概念。 ?...Ruby将这个可用位图存放在独立的内存区域中,以便充分利用Unix的写拷贝化。...我会讨论一下Python如何摆平环形数据类型及GC在即将出炉的Ruby2.1行版中是如何工作的。

    70010

    DevOps工具介绍连载(48)——静态扫描工具Brakeman

    Brakeman 4.8.2布 此版本引入了一个新选项和两项新检查!...渲染参数 render像其他所有方法调用一样,将作为所有参数的调用编入索引并检查所有漏洞类型。...案件(#1426) 移除named_scopevs.的版本保护scope 在String#strip_heredoc目标中查找SQL注入(#1433) 处理模型确保设置了文件名 捆绑软件ruby_parser...将识别出更多的情况,特别是当它是方法调用的目标。 更多范围 无论检测到Rails的版本如何,都将处理named_scope和scope。...这将允许系统上的任何用户编辑在加载ruby_parser-legacygem 由Brakeman(或其他从属库)执行的代码。 在此版本的brakemangem中,这些文件的权限已得到更正。

    2.2K10

    Ruby和Phoenix vs. Rails:选择什么和为什么

    José一直在寻找有效的方法来解决Ruby on Rails开发中的并发问题,这些努力产生了一种新的编码语言。 Elixir是一种函数式语言,它使得它与面向对象的Web开发的大多数语言不同。...一些开发人员说这是Elixir的巨大优势,因为函数式编程允许更短更精确的代码,这也更容易测试和调试。然而,还有另一种观点认为Elixir是一种很难习惯的非常小众的语言。...Ruby历史简介 Ruby语言的第一个版本出现在1994年。该语言由日本计算机科学家和程序员Yukihiro Matsumoto创建。他说程序员的快乐是他在研究新编码语言的主要关注点。...Ruby on Rails的受欢迎程度背后的原因是什么? Rails框架由David Heinemeier Hansson在参与Basecamp项目创建。...它最初发布到开源是在2004年.Ruby on Rails是用Ruby编写的,这个事实对于Ruby的流行至关重要。在那之前,Ruby编码语言并没有那么成功。

    2.4K00

    《Python分布式计算》第2章 异步编程 (Distributed Computing with Python)协程一个异步实例总结

    这些任务具体是做什么在这里不重要。我们可以假设这四个任务是关于计算和I/O操作的。安排这四个任务的最直观的方式是序列化。下图展示了这四个任务对CPU的使用: ?...若要重复序列,必须再次调用generator函数。 用来在generator函数中产生序列值的yield表达式,还可以在等号右边使用,以消除值。这样就可以得到协程。...执行complain_about('Ruby')产生了协程。为了使用新建的协程,我们用next()调用它,与在生成器中所做的相同。...当使用协程,许多人觉得必须要用next()很繁琐,转而使用装饰器,避免多余的调用,如下所示: >>> def coroutine(fn): ......我们将接收数据的协程当做参数(前面例子的child),传递给产生数据的函数或协程。然后,在数据源中,调用协程的send方法。

    1.5K100

    Ruby(1):入门

    对于只带一个参数的函数函数的括号可以省略   4. 一切皆对象。每种对象都有丰富的方法,且可以直接给内置的对象增加方法。   ...简单的使用: 计算:   可以使用 1 + 1 、2+2之类的来计算,需要注意的是,如果直接使用 10/3 得到的将是3, 要想得到 3.3333 需要使用 10.0 /3 或者 10/3.0 循环:...我们也可以使用 Kernel.puts 来进行输出 ,当ruby发现方法的调用方为空的时候就会去Kernel模块去找。...以非面向对象的方式使用Ruby: 可以直接在main函数中定义一个新的方法,然后直接调用。这个调用的时候是没有带任何对象的。其实该方法也属于Kernel对象。也可以通过Kernel....("Haha") 7 Kernel.myPrint("Haha") 通过Kernel.methods 可以得到 Kernel的所有方法,里面可以看到有 :myPrint 的签名。

    79580

    CTP 看穿式监管版本,收集信息为什么会失败?

    既然 demo 能用,那 demo 的网络数据包是怎样的?我自己的程序的网络数据包又是怎样的?用工具抓包即可。...这段汇编代码是在做什么?先不用管,先了解一下 Windows 系统函数的 Calling Convention: Win32 系统调用 Convention 栈:一段连续的内存,用于存放数据。...在 Windows 中,调用某些系统函数函数的参数通过栈传递,也就是参数依次入栈,从而在函数体内可以从栈中读取这些参数。 调用系统函数函数的返回地址被压栈,从而让函数退出可以找到回去的路。...此处省略1千字) 那一定是这个命令执行遇到了什么问题。 第五回 云开见日,林深见鹿 在 Windows 中,如果一个系统函数执行发生了问题,一般可以通过 GetLastError 获得错误信息。...system cannot find the file specified. 2 表示执行 system("wmic path win32_physicalmedia get SerialNumber") 生了错误

    6.3K31

    《Effective-Ruby》读书笔记

    ping(net + ".1") end end 如果调用方法 unreadchable 没有加参数的话,会意外的改变一个常量的值。在 Ruby 中这样做甚至都不会警告你。...第 8 条:初始化子类时调用 super 当创建子类对象Ruby 不会自动调用超类中的 initialize 方法。...它为什么这么特别?在函数式编程的范畴中,它是一个可以将一个数据结构转换成另一种结构的折叠函数。...让我们先从宏观的角度来看折叠函数,当使用如 reduce 这样的折叠函数你需要了解如下三部分: 枚举的对象是 reduce 消息的接受者。某种程度上这是你想转换的原始集合。...猜猜如果你继承了 Array 类并调用了子类的 reverse 方法后会发生什么

    4K60
    领券