You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基础Pig Latin翻译器出现NoMethodError问题求助

解决Ruby Pig Latin翻译器的NoMethodError问题

错误根源

你的代码存在两个核心问题:

  • 硬编码了数组索引(b4pig[0]到b4pig[3]),默认输入短语固定有4个单词。如果输入的单词数少于4,b4pig[3]会返回nil,调用nil.slice就会触发NoMethodError。
  • 写法完全不具备扩展性,无法处理任意长度的输入短语。

修正后的代码

def pig_it(text)
  text.split(" ").map do |word|
    word[1..-1] + word[0] + "ay"
  end.join(" ")
end

代码逻辑说明

  1. text.split(" "):将输入字符串按空格分割成单词数组,支持任意数量的单词。
  2. map遍历每个单词:对每个单词执行转换操作,无需关心数组长度,从根源避免了nil调用方法的问题。
  3. word[1..-1]:取单词从第2个字符到末尾的子串,替代原代码中slice+delete的组合,更简洁且不会误删重复字符。
  4. word[0]:取单词的首字母。
  5. join(" "):将转换后的单词数组重新拼接成空格分隔的字符串。

测试验证

  • 输入'Pig latin is cool',输出'igPay atinlay siay oolcay',符合需求。
  • 输入'This is my string',输出'hisTay siay ymay tringsay',符合需求。
  • 输入任意长度短语(如'Hello world'),可正常转换为'elloHay orldway'。

内容的提问来源于stack exchange,提问作者PieSize

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:57:29