小编Pri*_*ock的帖子

我可以在`elsif`上使用`else if`吗?

  1. 它是安全的使用else ifelsif
  2. 它是否更好使用,elsif因为它遵循Ruby的打字约定?
  3. 或者这是一个偏好?

这是从书中获取的一段代码.我添加了额外的end关键字和交换elsif关键字与else ifs.

def describe(inhabitant)
  if inhabitant == "sophie"
    puts 'gender: female'
    puts 'height: 145'
  else if inhabitant == "paul"
    puts 'gender: male'
    puts 'height: 145'
  else if inhabitant == "dawn"
    puts 'gender: female'
    puts 'height: 170'
  else if inhabitant == "brian"
    puts 'gender: male'
    puts 'height: 180'
  else if 
    puts 'species: Trachemys scripta elegans'
    puts 'height: 6'
  end
  end 
  end   
  end
  end
end
Run Code Online (Sandbox Code Playgroud)

这让我意识到这是多么丑陋 …

ruby

44
推荐指数
2
解决办法
3万
查看次数

公共变量糟糕的做法与Getters和Setters功能相比?

我在他的小溪中偶然发现了这一点,这就像一个痛苦的拇指一样向我伸出.我想也许如果我保存视频并在将来回到它时我会更加熟练,我会理解它,但它只是一直困扰着它.这是视频......

它会自动从1:13:00开始.

https://youtu.be/uHSLHvWFkto?t=4380

作为C/C++的新程序员,在听到这个之后,它完全扭曲了我的思维方式.由于他是一名专业人士而且我应该接受建议,但我需要一些清晰度.从网站,视频到书籍,我已经读过使用公共变量是一种不好的做法,但是从我从这个视频中得到的结果却不然.在视频中,他使用的结构默认情况下具有"公共"的访问修饰符与默认访问"私有"的类.有没有我在这里无法理解的东西.

我不知道该怎么办.如果我公开我的变量,我不会冒险模糊吗?他说他会自动解雇某人以格式编码的方式对我来说哈哈!我应该真正使用哪一个?何时以及为何?

c++

11
推荐指数
3
解决办法
4619
查看次数

在 Gosu 中居中文本

我一直无法将 Gosu 库中的文本居中到屏幕的绝对中间。

require 'gosu'

class GameWindow < Gosu::Window
  def initialize (width=800, height=600, fullscreen=false)
    super
    self.caption = 'Hello'
    @message = Gosu::Image.from_text(
        self, 'HELLO WORLD', Gosu.default_font_name, 45)
  end

  def draw
    @message.draw(377.5,277.5,0)
  end
end

window = GameWindow.new
window.show 
Run Code Online (Sandbox Code Playgroud)


我的第一种方法是取height屏幕的 ,减去文本的高度45,然后除以 2。现在这似乎在垂直对齐时起作用。

在此处输入图片说明

然而,水平是一个不同的故事......它似乎是在文本的左上角并将其居中,而不是文本的中间。

在此处输入图片说明

有人有这个公式吗?我尝试了很多东西,但只差一点。

ruby libgosu

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

MessageBox中未显示增量,并且更改了变量值

关于这段代码我有两个问题......

  1. 为什么在第10行开始保持当前值.例如,

    int a = 7
    
    Run Code Online (Sandbox Code Playgroud)

    (a += 4)这是现在制作它11的下一行代码.而不是仅仅将其用于可变初始宣布这是.怎么没有得到?是在运营商改变了我最初宣布它在代码的开始?是否仍持有价值在内存中,还是那些语句改变这种状况?(a -= 4)7a73=+=a7

  2. 在最后一个MessageBox.Show()声明.我a通过1使用增量a++.但是,我获得了与之前相同的价值MessageBox.Show().怎么没有增加?

这是代码:

private void button1_Click(object sender, EventArgs e)
{
    int a = 7;
    int b = 3;

    MessageBox.Show((a + b).ToString(), "a+b");
    MessageBox.Show((a - b).ToString(), "a-b");
    MessageBox.Show((a * b).ToString(), "a*b");
    MessageBox.Show((a / b).ToString(), "a/b");
    MessageBox.Show((a += 4).ToString(), "a+=4"); //adds 4 to a
    MessageBox.Show((a -= 4).ToString(), "a-=4"); //substracts 4 …
Run Code Online (Sandbox Code Playgroud)

c# increment operators

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

如何在不制作副本的情况下使用unqiue_ptr进行堆叠?

最初我做了一个抽象类型的堆栈GameState*.那就是......

std::stack<GameState*> gameStates

然而,有人告诉我,如果我想保留所有权,我应该使用C++ 11的智能指针unique_ptr.那就是......

std::stack<std::unique_ptr<GameState>> gameStates

现在每当我把我推GameState到堆栈上时,我的编译器就会抱怨.我显然做错了......

它说..

no instance of overloaded function matches the argument list

SplashScreen splashScreen1(game); //gameState object declaration
gameStates.push(std::move(&splashScreen1)); //move to stack without copying
Run Code Online (Sandbox Code Playgroud)

出现错误的红线位于.in 下方gameStates.push(std::move(&splashScreen1))

我该如何解决 ?

c++ c++11

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

标签 统计

c++ ×2

ruby ×2

c# ×1

c++11 ×1

increment ×1

libgosu ×1

operators ×1