小编the*_*nso的帖子

如何在Ruby中实现多态性

所以这是一个更多的java-esq方法(我认为)......我在Ruby中有这个代码

class Human
  def move
    p 'Human move: X'
  end
end


class Computer
  def move
    p'Computer move: O'
  end
end

class Player
  def initialize(letter)
    if letter == 'X'
      return Human.new
    else
      return Computer.new
    end
  end
end

bob = Player.new('X')
bob.move
Run Code Online (Sandbox Code Playgroud)

我期待着回到cli'人类的举动:X'我得到了以下错误......

undefined method `move' for #<Player:0x007f8d930895a8> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助这个Ruby noob吗?

-------------------------讨论------------------------

现在,我想通过继承和覆盖,以更多,我猜,"经典"的Ruby方式来实现这一目标.现在,这对我脑海中的副处理器毫无意义.我的意思是,如果我这样做的话......我可能只需要在任何其他类文件中的类文件并实例化一个新对象.当你在Java中执行它时,它感觉不像真正的多态......这是代码....

class Player
  def move
    return ""
  end
end

class Human < Player
  def move
    return 'Human move: X'
  end
end


class Computer < Player
  def move
    return'Computer move: O' …
Run Code Online (Sandbox Code Playgroud)

ruby

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

如何在rails app中创建JSON字符串

所以我正在使用TimelineJS(http://timeline.verite.co/),我正在使用Rails应用程序.

我需要找出如何生成一个合适的JSON字符串以用于TimelineJS.

所以给出下面的演示JSON字符串.....我需要对我的应用程序做什么才能重新创建这个JSON字符串?

(https://github.com/VeriteCo/TimelineJS#json)TimelineJS开发人员展示的示例JSON看起来如此......

var dataObject = {
"timeline":
{
    "headline":"The Main Timeline Headline Goes here",
    "type":"default",
    "text":"<p>Intro body text goes here, some HTML is ok</p>",
    "asset": {
        "media":"http://yourdomain_or_socialmedialink_goes_here.jpg",
        "credit":"Credit Name Goes Here",
        "caption":"Caption text goes here"
    },
    "date": [
        {
            "startDate":"2011,12,10",
            "endDate":"2011,12,11",
            "headline":"Headline Goes Here",
            "text":"<p>Body text goes here, some HTML is OK</p>",
            "tag":"This is Optional",
            "classname":"optionaluniqueclassnamecanbeaddedhere",
            "asset": {
                "media":"http://twitter.com/ArjunaSoriano/status/164181156147900416",
                "thumbnail":"optional-32x32px.jpg",
                "credit":"Credit Name Goes Here",
                "caption":"Caption text goes here"
            }
        }
    ],
    "era": [
        { …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails timeline.js

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

java box mask不工作

这里的想法是创建一个盒子网格.在黑色网格下面是另一个多色盒子网格.当你点击一个方框时,它的面具会消失,显示下方的彩色方框.然后,如果颜色匹配hurray,则单击第二个框,否则则游戏继续.这是代码.

import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GuessingGame extends Applet{
  /**
   * 
   */
  private static final long serialVersionUID = 1L;
  private final int START_X = 20;
  private final int START_Y = 40;
  private final int ROWS = 4;
  private final int COLS = 4;
  private final int BOX_WIDTH = 20;
  private final int BOX_HEIGHT = 20;
  //this is used to keep track of boxes that have been matched.
  private boolean matchedBoxes[][];
  //this …
Run Code Online (Sandbox Code Playgroud)

java

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

twitter gem并传递用户名和密码

我正在使用这里的twitter gem ... http://rubydoc.info/gems/twitter/2.0.2

我正在尝试使用需要身份验证的方法...... Twitter.home_timeline

http://rubydoc.info/gems/twitter/2.0.2/file/README.md上的rdoc自述文件声明......

某些方法需要身份验证 要获取您的Twitter OAuth凭据,请在http://dev.twitter.com/apps上注册应用程序

我已配置并设置此文件...

Twitter.configure do |config|
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,用户来到我的应用程序,能够输入他们的屏幕名称和密码,然后看到他们的实时流和他们的用户的各种很酷的Twitter数据的显示.

请帮忙...我该怎么做?我用什么方法来传递网站访问者的用户名和密码?

......啊,是的,我是铁路菜鸟所以请温柔.

twitter gem ruby-on-rails ruby-on-rails-3.1

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

为什么ruby哈希键不相等

所以我有一个哈希问题......我想:

我有两个哈希,我正在比较.在我的代码的某些时候,我得到了一个响应,如...

@moves = {:wm01 => {:a1=>"O", :a2=>" ", :a3=>" ", :b1=>" ", :b2=>"O", :b3=>" ", :c1=>" ", :c2=>" ", :c3=>" "}
Run Code Online (Sandbox Code Playgroud)

这对应于答案键哈希......

@anskey = {
    :wm01=>":c3",:wm02=>":c2",:wm03=>":c1",:wm04=>":b3",:wm05=>":b1",:wm06=>":a3",:wm07=>":a2",:wm08=>":a1",
    :wm09=>":a3",:wm10=>":c1",:wm11=>":a1",:wm12=>":c3",:wm13=>":c3",:wm14=>":c1",:wm15=>":c3",:wm16=>":a1",
    :wm17=>":b1",:wm18=>":b2",:wm19=>":b3",:wm20=>":a2",:wm21=>":b2",:wm22=>":b2",:wm23=>":c2",:wm24=>":b2"
  }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要迭代@anskey,其中@ moves.keys == @ anskey.keys

(似乎很简单,但似乎没有工作)

然后设置....

my_answer_is = @anskey.value
Run Code Online (Sandbox Code Playgroud)

这样的事情???

@anskey.each do |key. value|
  if @moves.keys == key
     my_answer_is = @value
  end
end
Run Code Online (Sandbox Code Playgroud)

以下违规代码

class Player

  attr_reader :boardpiece

  def initialize(letter)
    @boardpiece = letter
  end

  def move_human(game)
    puts "human move..."
    @move = gets.chomp
  end

  def move_computer(game)
    puts "computer move..."

    # …
Run Code Online (Sandbox Code Playgroud)

ruby

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

如果method_one返回值返回值,则在ruby中尝试method_two

怎么说如果method_one返回一个值,然后中断,否则试试method_two

def ai_second_move(board)
  p "2nd move called"
  # TODO - how to say if method_one gives me a value, break, else method_two
  method_one(board)
  method_two(board) 
end
Run Code Online (Sandbox Code Playgroud)

ruby

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