else if过elsif?elsif因为它遵循Ruby的打字约定?这是从书中获取的一段代码.我添加了额外的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)
这让我意识到这是多么丑陋 …
我在他的小溪中偶然发现了这一点,这就像一个痛苦的拇指一样向我伸出.我想也许如果我保存视频并在将来回到它时我会更加熟练,我会理解它,但它只是一直困扰着它.这是视频......
它会自动从1:13:00开始.
https://youtu.be/uHSLHvWFkto?t=4380
作为C/C++的新程序员,在听到这个之后,它完全扭曲了我的思维方式.由于他是一名专业人士而且我应该接受建议,但我需要一些清晰度.从网站,视频到书籍,我已经读过使用公共变量是一种不好的做法,但是从我从这个视频中得到的结果却不然.在视频中,他使用的结构默认情况下具有"公共"的访问修饰符与默认访问"私有"的类.有没有我在这里无法理解的东西.
我不知道该怎么办.如果我公开我的变量,我不会冒险模糊吗?他说他会自动解雇某人以格式编码的方式对我来说哈哈!我应该真正使用哪一个?何时以及为何?
我一直无法将 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。现在这似乎在垂直对齐时起作用。
然而,水平是一个不同的故事......它似乎是在文本的左上角并将其居中,而不是文本的中间。
有人有这个公式吗?我尝试了很多东西,但只差一点。
关于这段代码我有两个问题......
为什么在第10行开始保持当前值.例如,
int a = 7
Run Code Online (Sandbox Code Playgroud)
(a += 4)这是现在制作它11的下一行代码.而不是仅仅将其用于可变初始宣布这是.怎么没有得到?是在运营商改变了我最初宣布它在代码的开始?是否仍持有价值在内存中,还是那些语句改变这种状况?(a -= 4)7a73=+=a7
在最后一个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) 最初我做了一个抽象类型的堆栈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))
我该如何解决 ?