相关疑难解决方法(0)

使用逗号运算符是一种好习惯吗?

我最近(实际上仅在SO上)遇到了C/C++逗号运算符的使用.据我所知,它在左侧和右侧操作符之间的线上创建了一个序列点,以便您具有可预测(定义)的评估顺序.

我有点困惑为什么会在语言中提供这个,因为它似乎是一个可以应用于首先不起作用的代码的补丁.我发现很难想象它可以被使用的地方不是太复杂(并且需要重构).

有人可以解释这种语言功能的目的,以及它可以在实际代码中使用的位置(在合理范围内),如果有的话?

c c++ operators

12
推荐指数
4
解决办法
948
查看次数

为什么Python的eval()拒绝这个多行字符串,我该如何解决?

我试图评估以下制表符缩进的字符串:

'''for index in range(10):
        os.system("echo " + str(index) + "")
'''
Run Code Online (Sandbox Code Playgroud)

我明白了,"有一个错误:语法无效,第1行"

有什么抱怨的?我是否需要缩进以匹配eval()语句,或将其写入字符串文件或临时文件并执行该操作或其他内容?

谢谢,

python eval metaprogramming python-3.x

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

为什么表达式和语句之间存在差异

可能重复:
表达式与声明

表达意味着什么?评估某事的东西会返回一个值吗?

它与声明有何不同?语句是否可以包含表达式,反之亦然?

c syntax

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

为什么我得到:警告:printf()php中的参数太少

我收到了错误

Warning: printf() [function.printf]: Too few arguments 
Run Code Online (Sandbox Code Playgroud)

看看我看到的代码:

function twentyten_posted_on() {
    printf( 
        sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
            get_permalink(),
            esc_attr( get_the_time() ),
            get_the_date()
        )
    );
}
Run Code Online (Sandbox Code Playgroud)

什么似乎是问题?

php

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

在 C# switch 表达式中使用块?

我找不到解决此问题的文档。(也许我只是不擅长使用谷歌......)我的猜测是答案是否定的,但是我不明白文档中在哪里解决了这个问题。准确地说,我的问题如下。

假设,我想执行这样的事情:

DirectoryInfo someDir = new DirectoryInfo(@".\someDir");
Console.WriteLine($"Would you like to delete the directory {someDir.FullName}?");
string response = Console.ReadLine().ToLower();

response switch
{
    "yes" => { someDir.Delete(); ... MoreActions},
     _ => DoNothing()
};
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用常规 switch 或 if/else 来实现所需的行为,但是我很好奇在这种情况下是否可以使用 switch 表达式。

c# c#-8.0 switch-expression

6
推荐指数
3
解决办法
2161
查看次数

在三元运算符中赋值

使用时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
查看次数

为什么要区分返回值的方法和不返回值的方法?

为什么有些语言会区分返回值的方法和不返回值的方法?

即在Oracle的PL/SQL中,函数和过程之间的主要区别在于函数必须返回一个值,而过程不能.

同样对于那些没有的语言,为什么不呢?


编辑:我发现了一个相关的问题,人们可能会对阅读这个问题感兴趣:

language-agnostic programming-languages language-design

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

解释c ++中语句和表达式之间的区别

我试图彻底理解一个陈述和一个表达之间的区别
但是我发现它甚至在阅读了这个答案之后就会感到困惑. 表达式和声明
请看下面的内容:

std::cout << "Hello there? " ;  
Run Code Online (Sandbox Code Playgroud)

我可以说它是一个声明,因为它以分号结尾但我也可以说它
是一个表达式,因为我有一个ostream,一个输出运算符和一个字符串文字
,这个表达式产生的值是左手操作数.
哪一个是正确的?

c++ expression

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

打字稿 2 - 在三元/条件运算符表达式中抛出

我尝试编译:

const value = "20"
const x : string | never = "10" === value ? throw Error("bad things") : "hello"
Run Code Online (Sandbox Code Playgroud)

...并在throw- 上出错expression expected。我可以使用就地调用的内联方法解决这个问题,但这看起来不太好。( (() => {throw Error("bad things"})())

为什么不能放入三元运算符的分支?或者是否有另一种有效的语法,也许是我缺少的编译选项?

在变通方法 ( (() => throw Error("bad things")()) 中,如果函数体中没有大括号,Throw 似乎也不起作用。

exception conditional-operator typescript

5
推荐指数
3
解决办法
3469
查看次数

在插值字符串中编写其他 C# 代码?

在 C# 11 中,我们现在可以在内插字符串中包含换行符。所以我们可以写这样的代码:

    string pageTitle = "";
    string header = $"Header: {
      pageTitle switch
      {
        "" => "No title",
        _ => pageTitle
      }}";
Run Code Online (Sandbox Code Playgroud)

除了 switch 语句之外,有没有办法在这里编写其他代码?

我尝试了一个if,它告诉我这if是一个无效的表达术语。

    string header51 = $"Header: {
      if (pageTitle5 == "")
      {
        "No title";
      }
      else
      {
        pageTitle5;
      }  
    }";
Run Code Online (Sandbox Code Playgroud)

除了 switch 之外还有其他语句可以在这里使用吗?

c# string-interpolation c#-11.0

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