- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
class ViewController: UIViewController {
@IBOutlet weak var inputField: UITextField!
@IBOutlet weak var output: UITextView!
var guesses : UInt = 0
var number : UInt32 = 0
var gameOver = false
let MAX_GUESSES : UInt = 8
@IBAction func guess(sender: UIButton) {
var possibleGuess : Int? = inputField.text.toInt()
if let guess = possibleGuess {
// possibleGuess exists!
} else {
consoleOut("Please input a valid number!\n")
clearInput()
}
if UInt32(guess) > Int(number) {
consoleOut("\(guess): You guessed too high!\n")
++guesses
} else if UInt32(guess) < number {
consoleOut("\(guess): You guessed too low!\n")
++guesses
} else {
consoleOut("\n\(guess): You win!\n")
consoleOut("Go again? (Y)")
guesses = 0
gameOver = true
}
clearInput()
if (guesses == MAX_GUESSES) {
consoleOut("\nYou lose :(\n")
consoleOut("Go again? (Y)")
guesses = 0
gameOver = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
number = generateNewNumber()
consoleOut("Gondolkodom egy számot...\n")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func consoleOut(text : String) {
output.text = output.text + text
}
func generateNewNumber () -> UInt32 {
return arc4random_uniform(100)
}
func clearInput() {
inputField.text = ""
}
}
这是我使用的代码,我在 if UInt32(guess) > Int(number) {
处收到错误消息。我真的受不了了。
(swift) Error: can not invoke '>' with an argument list of type '(UInt32, @lvalue UInt32)'
最佳答案
* 这不完全是你的问题,但它可能会告诉你一个解决它的方法:) *
这一定是一个 Swift 错误,就像 ObjectiveC 的许多其他错误一样。我在尝试比较 arc4random() 数字(它是 UInt32 类型)与 UInt32() 转换字符串时遇到了同样的问题,我得到了同样的错误,这在我的例子中更离谱,因为这两个数字是同一类型。这让我认为类型转换一定没有产生预期的结果。
我虽然创建了一个辅助 UIint32 变量并为其赋值 UInt32(theString),但是 Swift 不允许您在定义变量时将 String 转换为 UInt32,因此我不得不创建一个辅助变量以转换为 Int,并且然后将 Int 转换为 UInt32 以便能够比较两个数字:
var theString = "5"
var randomNumber = arc4random() % 10
var UInt32Number = UInt32(theString)
// => ERROR: "Cannot invoke 'init' with an argument of type '@lvalue String!'
// (this is where I realized the comparison line could be suffering from the same problem)
if randomNumber == UInt32(theString) { ... }
// No error here 'cos Swift is supposed to have casted theString into a UInt32
// ...but surprisingly it prompts an ERROR saying it can't compare a UInt32 with a UInt32 (WTF!)
// And here's where I go crazy, because watch what happens in the next lines:
var intValue = theString.toInt()
var UInt32Value = UInt32(intValue!)
if randomNumber == UInt32Value { ... } // => NOW IT WORKS!!
结论:Swift 没有在比较中创建转换类型,即使它应该这样做。有时它看起来很糟糕。使用具有集合类型的辅助变量可以解决这个问题。
关于swift - ( swift )错误 : can not invoke '>' with an argument list of type '(UInt32, @lvalue UInt32)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25898004/
这个问题在这里已经有了答案: The "++" and "--" operators have been deprecated Xcode 7.3 (12 个答案) 关闭 5 年前。 我刚刚将我的应
在下面的代码片段中,为什么行 o.margin() = m; 编译没有错误?它很容易得到警告,因为它几乎总是一个错误。我实际上会认为这是一个错误,因为它会将 R 值放在赋值的左侧。 #include
我是 C 语言的新手。我对左值错误有疑问。据我所知,当没有永久地址承载变量来存储右值时,我们会得到一个左值错误。在这里,我可以在左侧看到一个变量。但是,我仍然得到左值错误。有人可以澄清我对左值或所用运
#include int main(){ int i=0,j=1; printf("%d",++(i+j)); return 0; } 在这段代码中,我使用了增量运算符,但我不
#include int main() { int ary[2][3]; foo(ary); } void foo(int (*ary)[3]) { int i = 10,
这个问题已经有答案了: Error: lvalue required in this simple C code? (Ternary with assignment?) (4 个回答) lvalue
我无法理解这段代码为何有效。我进入 C# 世界已经有一段时间了,想在深入研究 C++11 中的新内容(如 RValue Refs 和移动语义)之前先复习一下 C/C++。 我想知道为什么我编写的这段代
我想使用以下我认为不标准的成语。我有利用返回值优化返回 vector 的函数: vector some_func() { ... return vector( /* something
谁能帮我弄清楚为什么我在最内层的循环程序中总是出错 * 突出显示它必须是一个可修改的 lValue。 using namespace std; #include int main() { /
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
有很多关于模板参数推导的讨论和澄清,特别是引用折叠和“通用引用”。本题通过相关细节:How does auto deduce type? ,而 Scott Meyers 的这篇论文更详细,可能会提供更
在下面的代码中: _imageView.hasHorizontalScroller = YES; _imageView.hasVerticalScroller = YES; _imageView.au
我有以下 C++ 代码,当我编译它时出现“需要左值”错误。请指出我哪里出错了。谢谢。 #include #include void main() { clrscr(); char r[5]
所以 Move 语义很棒,给了我们更高的性能。 我读到这是一个全新的特性,如果没有 C++11,这是“不可能”做到的。 但是我们可以在 C++11 之前做到这一点吗?就像下面这样。 class AAA
根据我的理解,在下面代码中标记为“第 2 行”的行中,表达式 (*ptr)++ 应该生成“需要左值”错误,因为 *ptr 的计算结果为 i=1 的常量值,这不是左值? 那么为什么程序能成功运行呢?还是
多年来,我一直在使用包含以下条件的代码 ref \$_[0] eq 'SCALAR' 我一直希望有一个 ARRAY 或 SCALAR,但最近我将 substr() 传递给了那个参数。意想不到的事情发生
好的,代码是: vector> imageFiltered; // some processing codes here parallel_for( blocked_range(0, imageFil
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
#include main() { int x,n,r; scanf("%d" , & x); for (n=2;n<(x/2);n++) { (x%n=r);
这个问题已经有答案了: Assignment statement used in conditional operators (6 个回答) 已关闭 5 年前。 #include int main()
我是一名优秀的程序员,十分优秀!