问题标签 [language-concepts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
29 浏览

language-concepts - 我怎样才能证明这个语法是模棱两可的?

我试着这样展示

我怎样才能解决这个问题?

0 投票
1 回答
32 浏览

algorithm - 使用数学结果作为变量

我正在使用批处理代码创建一个 POS 系统(销售点系统)。一切都很好,但我试图将两个变量(产品的数量)乘以一个设定的数字(产品的价格)并将输出发送到一个单独的文件,该文件将作为最终产品列表读取,或设置为变量。我什至不知道这是否可能,但如果可以,请有人帮忙。

如果您需要更多详细信息,请告诉我。

0 投票
3 回答
475 浏览

c - C 对数组的厌恶

在有关 C 的介绍性书籍中,经常声称指针或多或少数组。充其量,这不是一个巨大的简化吗?

C中有一个数组类型,它的行为与指针完全不同,例如:

给出输出

或者作为另一个示例a = b会给出编译错误(GCC:“赋值给具有数组类型的表达式”)。

当然,指针和数组之间有密切的关系,从某种意义上说,是的,数组变量本身的内容就是第一个数组元素的内存地址,例如int a[10] = {777, 1, 2, 3, 4, 5, 6, 7, 8, 9}; printf("a = %ul\n", a);打印包含 777 的地址。

现在,一方面,如果您在结构中“隐藏”数组,您可以轻松地复制大量数据(如果您忽略包装结构,则为数组),只需使用=运算符(而且速度更快):

输出:

但是你不能用数组本身来做到这一点。对于数组x, y(相同大小和相同类型),表达式x = y是非法的。

然后,函数不能返回数组。或者如果数组被用作参数,C将它们折叠成指针——它不关心大小是否明确给出,所以下面的程序给出了输出sizeof(a) = 8

这种对数组的厌恶背后有什么逻辑吗?为什么 C 中没有真正健壮的数组类型?如果有一个会发生什么坏事?毕竟,如果一个数组隐藏在 a中,则struct该数组的行为与 Go、Rust 等中的一样,即数组内存中的整个块,传递它会复制它的内容,而不仅仅是第一个的内存地址元素。例如像在下面的程序中

给出输出:

0 投票
3 回答
70 浏览

c# - 类外使用的命名参数

我知道在 C# 中有命名参数之类的东西,所以这有点误导。我的问题是它们通常应该被称为什么。

在我使用其他语言的库时,我有时会遇到可以在类的函数中使用的预定义值。

它通常以所有大写字母命名,并且是函数中非常具体的值。我认为它的行为很像公共静态字符串,但是当我使用这个想法时,智能感知并没有选择它。有人可以告诉我这种参数选项的一般名称,如果它们存在,使用这种东西的利弊。

谢谢,

0 投票
0 回答
121 浏览

php - PHP:如何正确地将原语复制到新的内存地址

我最近遇到了一个问题(PHP:变量值神秘地设置为 0),其中一个变量按值传递给 PHP 函数,并且不知何故该变量的值被更改,如下所示:

假设它是一个用 C 编写的旧函数,并且在其内部它正在做一些事情来破坏变量,因为在 C 中显然你可以做那种事情。无论如何,我尝试先复制该值,然后将其传入,如下所示:

当然这并没有帮助,因为正如我在这里阅读的那样, PHP 只是$var2在符号表中指向与该 zval 容器相同的 zval 容器$var并增加该 zval 容器的引用计数。当然,如果$var2是“按值”重新分配,则应该为其创建一个新的 zval 容器,但这显然不是常规的按值分配(在上一个问题中与__set()魔术方法有关) . 我假设存储值的物理内存地址发生了一些事情,而不是通过正常的 PHP 机制发生了分配,因此指向该 zval 的所有内容都会受到影响。很好。

我的解决方法是找到一种克隆原语的方法$var。抱歉,如果这是重复的话,但是我在克隆类上发现了很多东西,但在克隆原语上却一无所获,我认为是因为 PHP 应该自动正确地执行此操作。我最终使用了这个:

我只是想知道,有没有更好的方法?让我们假设没有其他解决方法,例如使用不同的函数或其他东西,并且我们必须获得该变量的真实副本。怎么可能呢?

0 投票
1 回答
489 浏览

r - R中的mode,storage.mode,typeof有什么区别(在想法方面)?

到目前为止我的研究

大多数文章都讨论了 和 之间的区别class,但我对、和之间的区别并typeof没有发现太多。modestorage.modetypeof

我明白了mode,storage.modetypeof更相似,class也更不同。我知道前两个电话typeof,我知道他们处理特定类型略有不同(我什至知道哪些以及如何处理)。我想知道的是这背后的想法是什么。

最小的工作示例

我在找什么

不是在寻找什么样的答案:“mode并以不同的方式storage.mode处理single

我正在寻找什么样的答案:“typeof是在底层 C 实现中使用的mode数据类型,而是......的数据类型并且storage.mode是......的数据类型”

此外,我希望能够区分手册和教程中使用的术语“模式”和“类型”。例如,有人说typeof返回数据对象的模式——这让我感到困惑。


我希望这个问题足够具体/清楚。在否决或投票结束之前,请告诉我有什么不清楚的地方。

0 投票
1 回答
619 浏览

scala - Scala `match` 是语法糖吗?如果是这样,它是如何工作的?

有相当多的语法糖正在发生。我知道这case是隐式创建两个对象

这就是为什么我们可以编写例如Sum(...)并且仍然通过类实例化对象的原因,因为Sum(...)它也是Sum.apply(...).

我是对的,match构造也是语法糖吗?如果是,case Number(n)编译器是如何重写的?

我在问,因为我没有看到nin 在case Number(n)任何地方定义和/或绑定到一个值。奇怪的是,在match构造中,第一个字母的大小写很重要(如果它是大写字母,它将是一个常数)。这很奇怪,因为据我所知,这只是一个match相关的结构,所以我不知道如何去糖。

0 投票
2 回答
7045 浏览

scala - 用 Map 而不是 List 理解 foldLeft

我很想了解foldLeft地图的工作原理。如果我有一个 List 并使用一个零元素和一个函数调用它 foldLeft,我确实理解它是如何工作的:

我在其中添加零元素0和第一个元素,list1然后添加第二个元素,list1依此类推。所以输出成为新的输入,第一个输入是零元素。

现在我得到了代码

  1. 所以我这里的第一个元素是 a Tuple2,但既然map2是 aMap而不是 a Tuple2,那么零元素是什么?
  2. 当我们有 aListlist1,我们总是“取下一个元素list1”。什么是“下一个元素” map1?是另一对map1吗?
0 投票
1 回答
81 浏览

scala - 何时明确说明函数输入的类型?

我能够计算火花集合的每个起始字母的平均字长

要么与

或与

每个导致

我不明白的是:为什么我需要在第二个示例中明确说明函数中的类型,而第一个示例的函数可以不用?

我在谈论

对比

它可能更像是 Scala 而不是 Spark 问题。

0 投票
2 回答
274 浏览

java - 为什么 Java 提供了 LockSupport 但没用

奇怪的是,Java Doc说:

这些方法旨在用作创建更高级别同步实用程序的工具,它们本身对大多数并发控制应用程序没有用处。

有什么例子/场景来说明JavaSupport有用吗?