标签: variable-assignment

python3中带有内联赋值的if语句(赋值表达式)

在 python (3) 中给出以下语句:

import math
for i in range(100):
    if((result = math.factorial(i)) % 10  == 0):
        print(i,"->",result)
Run Code Online (Sandbox Code Playgroud)

难道不可能吗(就像C语言一样)?

if-statement inline variable-assignment python-3.x

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

为什么将 int 分配给 std::map<string,string> 不会产生编译器错误

尝试将 int 分配给字符串\n std::string s = 5;\n会产生以下编译器错误:

\n

error: conversion from \xe2\x80\x98int\xe2\x80\x99 to non-scalar type \xe2\x80\x98std::string\xe2\x80\x99 {aka \xe2\x80\x98std::__cxx11::basic_string<char>\xe2\x80\x99} requested

\n

但是,将 int 分配给映射中的字符串值则不然。例如,下面的代码可以编译,更糟糕的是使赋值将 int 转换为 char

\n
map <string, string>m;\nm["test"] = 5;\n
Run Code Online (Sandbox Code Playgroud)\n

这不应该是一个错误吗?

\n

c++ initialization stdstring variable-assignment

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

在 Kotlin 中,为什么 val 整数的值可以通过 inc() 方法重新分配?

考虑以下,

val x: Int = 0

val变量无法更改,因此这样做x += 1不起作用

编译器说Val cannot be reassigned

为什么那么x.inc()工作正常

x.inc()重新分配值 from 0to1

variables readonly variable-assignment kotlin val

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

为什么 Lua 的三元运算符阻止我的函数返回多个值?

正如摘要所述。假设我想以三元运算符的方式解析ReturnFunction 。好吧,据我所知,只要我的函数返回几个值(ReturnThreeValues)被放置在ReturnFunction返回后的最后一个位置,如果三元运算符执行我认为的操作,则ReturnFunction应该返回它给出的三个值这里是预期的,但由于某种原因,即使 n == nil ,它也会不断返回ReturnOneValue的值(因为我在调用时没有包含它)。可以在这里看到并尝试:

<script src="//github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js"></script>
<script type="application/lua">

    function ReturnOneValue(t, n)
        n = n or 1
        return t[n]
    end

    function ReturnThreeValues(t)
        return t[1], t[2], t[3]
    end

    function ReturnFunction(t, n)
        return n ~= nil and ReturnOneValue(t, n) or ReturnThreeValues(t)
    end

    local t = {"One", "Two", "Three"}
    local r1, r2, r3 = ReturnFunction(t)

    print(r1, r2, r3)

</script>
Run Code Online (Sandbox Code Playgroud)

好吧,基本上我不明白为什么我的打印结果是:“一零零”而不是:“一二三”,因为它应该是,如果三元运算符按(我认为是)预期的方式工作......或者在以这种三元方式解决多重返回函数时,我是否没有考虑到什么?

编辑:

FTR(以防万一对任何人都有用),在做了更多研究后,我找到了另一个问题以及可能的解决方法,结果证明它有效,如下所示:

<script src="//github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js"></script>
<script type="application/lua">

    function ReturnOneValue(t, …
Run Code Online (Sandbox Code Playgroud)

lua variable-assignment conditional-operator lua-5.2

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

在 Java 中,(a == (a = b)) 会产生未定义的行为吗?

我正在学习Java,我有一个关于赋值操作的返回值的属性的问题。我知道 Java 在 中 赋值之后返回变量的值x = y,但是这个赋值何时发生:在涉及赋值的整个表达式之前还是之后?它是在Java中定义的,是否在表达式中a == (a = b),变量的值在比较结果之前true修改,或者如果表达式给出了一个相当于的值a == ba然后 赋值b

我知道那a == (a++)truewhile 的a = (++a)结果false- 这里它确实稍后执行一元增量,即使存在括号。

int a = 2;
System.out.println(a == (a = 2*a+1));
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

这确实产生了

false
5
Run Code Online (Sandbox Code Playgroud)

作为输出,类似于一元增量的行为。我的编译器就是这样,还是这种行为实际上是通过=操作定义的?

java variable-assignment assignment-operator

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

Python中对象赋值的问题——链表节点示例

给定一个单链表实现和实例化:

class ListNode:
    def __init__(self, val=0, next=None):
        self.next = next
        self.val = val

head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
Run Code Online (Sandbox Code Playgroud)

进行以下操作后:

current_node = head
current_node = current_node.next
current_node.next = current_node.next.next
Run Code Online (Sandbox Code Playgroud)

生成的链表为 2->4 current_node,而 为 1->2->4 head。的结果对current_node我来说是有意义的,但我很困惑为什么结果head会改变。在这 3 个操作之后,我预计head会等于原来的值 (1->2->3->4),因为没有直接对head. 但是,如果操作是这样的:

current_node = head
current_node.next = current_node.next.next
Run Code Online (Sandbox Code Playgroud)

我确实希望head将其修改为 1->3->4,因为 和 都current_node引用head相同的内存地址。相反,在第一个示例中,在重新分配的第二行之后,current_node不再引用与 相同的内存地址head。我的理解是,无论发生什么,这个重新分配current_node都不应再与之相关head(显然情况并非如此)。有人可以解释一下 …

python linked-list variable-assignment

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

将变量转换为结构中的半字节

我面临以下情况。我有一个这样的结构:

typedef struct 
{
    uint8 nibble_1 : 4;
    uint8 nibble_2 : 4;
    uint8 data_1;
    uint8 data_2;
    uint8 data_3;
} NibbleStruct;
Run Code Online (Sandbox Code Playgroud)

背景信息:它是用于 CAN 通信的 32 位消息。

在代码中我有以下内容:

...
NibbleStruct nibble_struct;
uint8 nibble_to_assign = 0U;
nibble_struct.nibble_1 = nibble_to_assign;
...
Run Code Online (Sandbox Code Playgroud)

我需要保留 GCC (gnu99) 标志-Werror=conversion,但这会给出错误消息:

file_name.c 错误:从 'uint8' 转换为 'unsigned char:4' 可能会改变其值 [-Werror=conversion]|

我尝试用类似的东西进行投射

...
nibble_struct.nibble_1 = (uint8:4) nibble_to_assign; // invalid code
...
Run Code Online (Sandbox Code Playgroud)

...
nibble_struct.nibble_1 = (uint8) nibble_to_assign : 4; // invalid code
...
Run Code Online (Sandbox Code Playgroud)

但对于这不能编译并不感到惊讶。

有什么方法可以将我的变量转换为结构的nibble_to_assign 半字节吗?nibble_1或者在结构体外部的代码中声明一个半字节。

c variable-assignment compiler-flags compiler-warnings nibble

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

在 R 中,如何从一系列具有索引名称的变量快速创建数据框?

我想从一系列我命名为 的向量创建一个数据框d*i*。我尝试使用粘贴函数来执行此操作,但它只是构建了一个包含值为“d1、d2、d3...”的单列的数据框,我想将与这些变量名称关联的向量放入其中。我该怎么做这?

d1 <- c(6.3,8.3,6.6,0,8.4,8.6)
d2 <- c(8.2,8.7,8.6,7.9,7.1,7.6)
d3 <- c(7.1,6.4,6.6,8,7.5,10.3)
d4 <- c(8,7.7,7.3,0,9.4,6.4)
d5 <- c(8.5,6.8,0,0,7.3,9.7)
d6 <- c(5.9,7.5,6.5,0,9.8,7.8)
d7 <- c(7.6,5.3,6.7,0,6.6,7.4)
d8 <- c(9.5,5.6,8.8,0,8.6,8.3)
d9 <- c(8.5,7.4,0,0,9.2,8.6)
d10 <- c(7.8,6.9,8.6,6.7,6.8,6.1)

mydata <- data.frame(paste("d",1:10))
Run Code Online (Sandbox Code Playgroud)

r variable-assignment dataframe

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

模板化赋值运算符:有效的C++?

只是一个快速而简单的问题,但在任何文档中都找不到它.

template <class T>
T* Some_Class<T>::Some_Static_Variable = NULL;
Run Code Online (Sandbox Code Playgroud)

它用g ++编译,但我不确定这是否有效.是吗?

c++ static templates class variable-assignment

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

有没有更干净或更高效的Python任务?

这是我现在的代码:

lang = window.get_active_document().get_language()
if lang != None:
    lang = lang.get_name()
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?我是Pythonic的新手,并且想知道是否有更多的Python方式可以说"如果x为真,则某些东西等于此,否则它等于那个."

谢谢.

python variable-assignment

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