标签: conditional-operator

如果+可空类型(C#)的简写

以下返回

无法确定条件表达式的类型,因为"double"和"<null>"之间没有隐式转换

aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null)
Run Code Online (Sandbox Code Playgroud)

之所以我不能只使用aNullableBool而不是使用aDouble的往返是因为aNullableDouble是生成的EntityFramework类的一个属性,它不能用作超标.

c# conditional-operator

7
推荐指数
2
解决办法
3504
查看次数

使用C#条件运算符的编译器错误

我似乎无法在谷歌上找到我需要的东西,打赌我会在这里得到快速答案.

    String str;
    bool b = true;
    b ? str="true" : str="false";

    Console.Out.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

那个?:语法对我来说是正确的.我收到了编译器错误.

Program.cs(
13,28 ):错误CS1002 :; 期望的
Program.cs(
13,28 ):错误CS1525:无效的表达式术语':'
Program.cs(13,30):
错误CS1002 :; 预期

不确定csharp语法,但是在cpp中构建.请帮忙!谢谢!

更新:大约10个人给出正确的答案LOL,所以我只会奖励提交它的第一个人.

有趣的语法,我认为我实际上比c ++语法更喜欢它.

我这样做的实际代码是:

ftp.ConnectMode = job.FTPUsePassiveMode ? FTPConnectMode.PASV : FTPConnectMode.ACTIVE;
Run Code Online (Sandbox Code Playgroud)

c# conditional-operator

7
推荐指数
2
解决办法
1149
查看次数

使用条件运算符比较两个无符号值时的有符号/无符号不匹配

我有以下C代码:

unsigned int a;
unsigned char b, c;
void test(void) {
    if (a < b)
        return;
    if (a < (b ? b : c))
        return;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它(使用Microsoft cl,来自MS SDK 7,-W3警告级别)时,第二个比较会发出警告:C4018,签名/无符号不匹配.第一次比较没有发出警告.

我已经在条件运算符上检查了MS文档,并且他们说如果两个操作数是相同的类型,结果将是相同的类型,所以它应该作为第一个比较.我错过了什么吗?

UPD:测试gcc -Wall -Wextra -pedantic并且没有任何警告.

c conditional-operator visual-c++

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

println不会打印预期值

这是我的代码:

public static void main(String[] arg)
{

    String x = null;
    String y = "10";
    String z = "20";

    System.out.println("This my first out put "+x==null?y:z);

    x = "15";

    System.out.println("This my second out put "+x==null?y:z);

}
Run Code Online (Sandbox Code Playgroud)

我的输出是:

20
20
Run Code Online (Sandbox Code Playgroud)

但我期待这个:

This my first out put 10
This my second out put 20
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么我得到"20"作为两个println调用的输出?

java concatenation conditional-operator println

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

"或"有条件的Python麻烦

我正在学习Python,而且我遇到了一些问题.在我正在考虑的课程中看到类似的东西后,想出了这个简短的剧本.我之前用过"或"用"if"成功(这里没有显示太多).出于某种原因,我似乎无法让这个工作:

test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()

if x == "monkey" or "monkeys":
    print "You're right, they are awesome!!"
elif x != "monkey" or "monkeys":
    print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right animal."
Run Code Online (Sandbox Code Playgroud)

但是效果很好:

test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()

if x == "monkey":
    print "You're right, they are awesome!!"
elif x != "monkey":
    print …
Run Code Online (Sandbox Code Playgroud)

python conditional-operator conditional-statements

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

为什么没有Swift nil-coalescing三元运算符返回unwrapped类型?

我读到三元运算符??如果不是nil则解包一个可选项,但如果我这样做:

var type: String?
type = "milk"
let certainType = type ?? "melon"
Run Code Online (Sandbox Code Playgroud)

那么CertainType仍然是a String?,如果我这样做的话

println("it's a \(certainType)")
Run Code Online (Sandbox Code Playgroud)

它将打印:

it's a Optional("milk")
Run Code Online (Sandbox Code Playgroud)

思考?

更新:

抱歉混淆 - 我的意思是var类型:字符串?

我知道它应该打印"它是牛奶",但我在控制台中看到的是"它是一个可选的("牛奶")" - 其他人遇到了同样的问题?这可能是由字符串插值引起的吗?

@Antonio提问,这里有更多的上下文和实际代码和日志记录快照 - 类型来自Note,它是一个用于处理xcdatamodel的NSManagedObject类

class Note: NSManagedObject {
  @NSManaged var type: String?
}
Run Code Online (Sandbox Code Playgroud)

我在某个时候将类型设置为'todo',然后使用以下代码将它们打印出来:

println("type class:\(_stdlib_getDemangledTypeName(note.type))")
let type1 = note.type ?? "note"
println("type1:\(type1)")
let type2: String = note.type ?? "note"
println("type2:\(type2)")
Run Code Online (Sandbox Code Playgroud)

并输出:

type class:Swift.Optional
type1:Optional("todo")
type2:todo
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,如果我没有明确地将type1的类型标记为String,它将打印不需要的结果Optional("todo") - 我在字符串插值中使用类型来构造路径,因此它很重要

conditional-operator swift

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


Pug 语法中的三元运算符

是否可以在 Pug 代码中使用三元运算符?

我尝试让它发挥作用:

哈巴狗文件

- var disabled = true
input(type="checkbox" disabled ? disabled : null)
Run Code Online (Sandbox Code Playgroud)

HTML 结果

<input disabled ? disabled : null></input>
Run Code Online (Sandbox Code Playgroud)

HTML 期望的结果

<input disabled></input>
Run Code Online (Sandbox Code Playgroud)

我知道这里描述的标准条件 Pug 语法,但很难相信在现代 Pug 语法中没有机会使用三元运算符。

谢谢你帮助我!

frontend conditional-operator pug

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

在三元运算符中赋值

使用时std::weak_ptr,最佳实践是使用std::shared_ptrlock()方法访问相应的内容,如下所示:

std::weak_ptr<std::string> w;
std::shared_ptr<std::string> s = std::make_shared<std::string>("test");

w = s;

if (auto p = w.lock())
   std::cout << *p << "\n";
else
   std::cout << "Empty";
Run Code Online (Sandbox Code Playgroud)

如果我想使用三元运算符来简写它,则似乎是这样的:

std::cout << (auto p = w.lock()) ? *p : "Empty";
Run Code Online (Sandbox Code Playgroud)

将是有效的代码,但这不能编译。

是否可以将这种方法与三元运算符一起使用?

c++ conditional-operator

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

是否可以将纯右值显式转换为 const 引用以避免三元运算符中的额外复制?

假设我们有一些不可复制和不可移动的类型Foo,以及一个函数

int f(const Foo& foo) {
  ... // somehow compute the result depending on the value of foo.
}
Run Code Online (Sandbox Code Playgroud)

现在假设我们想像这样调用这个函数:

const Foo foo1{ 42 };
bool condition = getCondition();
int result = f(condition ? foo : Foo{ 150 });
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为fooFoo{ 150 }属于不同的值类别,因此,根据定义,三元运算符将返回类型的纯右值Foo- 这意味着foo1需要复制 if condition == true,因此这会导致编译错误。

然而,C++ 保证临时对象在表达式结束之前保持有效,因此我们可以这样写:

const Foo foo1{ 42 };
bool condition = getCondition();
int result = f(condition ? foo1 : static_cast<const Foo&>(Foo{ 150 }); …
Run Code Online (Sandbox Code Playgroud)

c++ conditional-operator prvalue

6
推荐指数
0
解决办法
152
查看次数