小编ste*_*her的帖子

重构Ruby:将字符串数组转换为int数组

我正在重构一个跳棋程序,我试图将玩家移动请求(例如"3,3,5,5"的形式)处理成一个int数组.我有以下方法,但它不像我所知的那样感觉像Ruby一样:

def translate_move_request_to_coordinates(move_request)
    return_array = []
    coords_array = move_request.chomp.split(',')
    coords_array.each_with_index do |i, x|
      return_array[x] = i.to_i
    end
    return_array
  end
Run Code Online (Sandbox Code Playgroud)

我用它进行了以下RSpec测试.

it "translates a move request string into an array of coordinates" do
      player_input = "3, 3, 5, 5"
      translated_array = @game.translate_move_request_to_coordinates(player_input)
      translated_array.should == [3, 3, 5, 5]
    end 
Run Code Online (Sandbox Code Playgroud)

测试通过,但我认为代码非常难看.任何帮助,将不胜感激.谢谢.

史蒂夫

ruby rspec

5
推荐指数
1
解决办法
1万
查看次数

测试复杂的方法

我正在进行一个checkers实现,我有几十个容易测试的方法,但我不知道如何测试我的主#play_game方法.我的大多数方法都很容易确定输入和输出,因此很容易测试,这种方法是多方面的,并且实际上没有容易辨别的输出.这是代码:

def play_game
    puts @gui.intro

    while(game_over? == false)
      message = nil
      @gui.render_board(@board)
      @gui.move_request
      player_input = gets 
      coordinates = UserInput.translate_move_request_to_coordinates(player_input) 

      message = MoveCheck.move_validator(coordinates[0], coordinates[1], coordinates[2], coordinates[3])
      puts message unless (message.nil? or message == "jumping move")
      if(message == nil or message == "jumping move")
        @current_player = switch_player unless (message == "jumping move" and jump_available? == true)
      end
    end
    puts @gui.display_game_ending_message  
  end
Run Code Online (Sandbox Code Playgroud)

那么,如何进行测试(使用RSpec的),或者我应该不用担心,真正对我,否则全面的测试?

ruby testing rspec

5
推荐指数
1
解决办法
196
查看次数

VIM:选择正则表达式,然后应用命令

我想将一大组标识符从小写更改为大写.我有一个文件,其中包含以(以数百左右)开头的唯一标识符q_.我构造了一个定义这个匹配的正则表达式:(q_\w*)现在我想应用~命令使它们全部为大写(它们目前是小写的).我觉得VIM更有能力做到这一点,但我的技能还没有,你能帮忙吗?

regex vim text

5
推荐指数
1
解决办法
452
查看次数

'equal'没有定义:Ember-qunit似乎没有导入

看来Qunit测试方法不可用,即使我很确定我正确地导入它们.

我收到以下错误:

unit/models/friend-test.js: line 11, col 3, 'ok' is not defined.
unit/models/friend-test.js: line 17, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 23, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 31, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 32, col 3, 'equal' is not defined.
Run Code Online (Sandbox Code Playgroud)

我有这个测试文件unit/models/friend-test:

import Ember from 'ember';
import { moduleForModel,  test } from 'ember-qunit';


moduleForModel('friend', 'Friend', {
  needs: ['model:article']
});

test('it exists', function() {
  var model = this.subject();
  ok(model);
});

test('fullName concats first …
Run Code Online (Sandbox Code Playgroud)

javascript testing qunit ember.js ember-cli

5
推荐指数
1
解决办法
1385
查看次数

Rails服务器命令不起作用(其他命令也是如此)

我是构建rails应用程序的第一部分,我无法获得命令

rails server
Run Code Online (Sandbox Code Playgroud)

工作,或任何其他rails命令.每当我尝试rails命令时,我都会得到这样的帮助屏幕:

$rails server
Usage:
  rails new APP_PATH [options]

 Options:
-r, [--ruby=PATH]              # Path to the Ruby binary of your choice                                   # Default: /home/sgallagher/.rvm/rubies/ruby-1.9.2-    p290/bin/ruby
-b, [--builder=BUILDER]        # Path to a application builder (can be a filesystem path or URL)
-m, [--template=TEMPLATE]      # Path to an application template (can be a filesystem path or URL)
[--skip-gemfile]           # Don't create a Gemfile
      [--skip-bundle]            # Don't run bundle install
    -G, [--skip-git]               # Skip Git ignores and keeps
Run Code Online (Sandbox Code Playgroud)

等等(无论我输入什么命令,它都给我相同的"rails new"命令)...

关于我的系统中可能缺少的内容或为什么这些命令没有响应的任何想法?谢谢 …

ruby-on-rails

4
推荐指数
1
解决办法
1万
查看次数

Ruby:一次从字符串和两个数组值构建哈希

我正在尝试使用以下方法构建哈希:

hash = {}

strings = ["one", "two", "three"]

array = [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

所以我最终得到:

hash = { "one" => [1, 2] ,
         "two" => [3, 4] ,
         "three" => [5, 6] }
Run Code Online (Sandbox Code Playgroud)

我试过了:

strings.each do |string|
  array.each_slice(2) do |numbers|
    hash[string] = [numbers[0], numbers[1]]
  end
end
Run Code Online (Sandbox Code Playgroud)

但那会产生:

hash = { "one" => [5,6] , "two" => [5,6], "three" => [5,6] }
Run Code Online (Sandbox Code Playgroud)

我知道为什么会这样做(嵌套循环),但我不知道如何实现我正在寻找的东西.

ruby iteration hash

3
推荐指数
1
解决办法
570
查看次数

如何使用jQuery预先格式化电话号码字段?

我想要为10位数字预先格式化一个电话号码文本字段,如下所示(管道不包括在内,只是分隔字段):

|(   )    -    |    
Run Code Online (Sandbox Code Playgroud)

并使用户输入的数字适当填写

|(804) 479-1832|
Run Code Online (Sandbox Code Playgroud)

我找到了一个很好的格式正确的脚本,因为这里输入了数字,但还没有提供预先格式化的结构.

是否有一个简单的库或链接?谢谢.

javascript jquery user-interface field

3
推荐指数
1
解决办法
9137
查看次数

在Ruby中反转数组元素极性的简便方法

在Ruby中,我有一个数组:

[1, 1, 1, -1, -1, 1, -1, -1] 
Run Code Online (Sandbox Code Playgroud)

我想得到:

[-1, -1, -1, 1, 1, -1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

我确信Ruby有一个简单的单行解决方案,但它现在逃脱了我.

ruby arrays

1
推荐指数
1
解决办法
79
查看次数

试图在Ruby中打开文件 - 获取TypeError:无法将String转换为Integer

不知道这里发生了什么,或者在这种情况下可能是整数.这是代码:

def build_array_from_file(filename)
    contents = []
    File.read(File.expand_path('lib/project_euler/' + filename), 'r') do |file|
      while line = file.get
        contents << line
      end
    end
    contents
  end
Run Code Online (Sandbox Code Playgroud)

filename是一个字符串,我已经检查以确保路径有效.

有什么想法吗?谢谢.

ruby types file

1
推荐指数
1
解决办法
2298
查看次数

如何在一行中搜索和替换多个项目?

我有一句话:

contact.psu_code = row[:psu_code] unless row[:psu_code].blank?
Run Code Online (Sandbox Code Playgroud)

我想替换psu_code,比方说contact_disposition,像:

contact.contact_dispositon = row[:contact_disposition] unless row[:contact_disposition].blank?
Run Code Online (Sandbox Code Playgroud)

它只能在我所在的单行中替换,没有确认.我知道,%s/orig/sub但这很麻烦.

ruby vim text replace

1
推荐指数
1
解决办法
146
查看次数