首页 > TAG信息列表 > language-design

java-变量名称在接口的声明中如何有用?

如果声明接口,则还必须指定变量名称. 例如在这个例子中 public interface ZipCodeServer { public String getCityName(int zipCode); } zipCode的目的是什么.理想情况下,我只想拥有 public interface ZipCodeServer { public String getCityName(int); } 而不指定其名

在Java中,为什么需要将闭包变量声明为final?

final Object o; List l = new ArrayList(){{ // closure over o, in lexical scope this.add(o); }}; 为什么必须宣布为最终?为什么其他具有可变var的JVM语言没有此要求?解决方法:这不是JVM深入的,它全部发生在语法糖级别.原因是通过闭包导出非最终变量会使其容易受到数

php – 如何产生空发生器?

我有一个方法,它采用一个生成器加上一些额外的参数,并产生一个新的生成器: function merge(\Generator $carry, array $additional) { foreach ( $carry as $item ) { yield $item; } foreach ( $additional as $item ) { yield $item; } } 此函

c – 为什么我们不能创建抽象类的实例?

我在很多地方发现: > Abstract Class是一个应该用作基类的类. >抽象类是一个至少具有一个纯虚函数的类. 但有一件事总是让我想到的是为什么我们不能创建一个抽象类的实例?互联网上的许多地方都说创建一个实例是没有意义的,或者有人说它们应该被用作基类.但是为什么创建抽象类的实例会

javascript – 为什么等待和异步有效变量名称?

我正在尝试围绕不同的关键字和运算符解释如何/被解释,并发现以下语法是完全合法的: // awaiting something that isn't a Promise is fine, it's just strange to do: const foo = await /barbaz/ myFn() 错误: Uncaught ReferenceError: await is not defined 看起来它试图将awa

javascript – “猴子补丁”真的那么糟糕吗?

像Ruby和JavaScript这样的语言有开放类,允许你修改偶数核心类的接口,如数字,字符串,数组等.显然,这样做可能会使熟悉API的其他人感到困惑,但是否则有充分的理由避免使用它们. ,假设您正在添加到界面而不是更改现有行为? 例如,将一个Array.map实现添加到未实现ECMAScript第5版的Web浏

为什么.equals()方法不会覆盖Java中的基元数组?

我目前正在开发一个项目,我希望使用用户名和密码与数据库进行比较来实现登录机制. 我有这样的想法: public boolean verifyUser( String username, char[] password ) { List<char[]> dbpass = getPasswords( username ); if ( dbpass.contains( password ) ) { overwri

javascript – 为什么无法在闭包中的私有函数中直接访问此属性?

在我自己对A JavaScript VM that interprets code written in JSON的回答中,我说过无法在“私有”函数中访问JavaScript闭包的“公共”属性. 该帖子中给出的例子是 function anobject(){ var privatefunction = function(){ //publicfunction(); //wrong; you have no

C 11是否保证一个垂死的物体会被移动而不是复制为一个参数?

#include <vector> using namespace std; void f(const vector<int>&) {} void f(vector<int>&&) {} int main() { { vector<int> coll; // // coll is dying, so, // "f(coll)" will

c – 是否存在阻止内置插件使用静态成员的技术限制?

我发现这很残忍: std::numeric_limits<int>::max() 真的希望我能写下这个: int::max 是的,有INT_MAX和朋友.但有时你正在处理像streamize这样的东西,这是未指定的内置的同义词,所以你不知道你应该使用INT_MAX还是LONG_MAX等等.是否有技术限制阻止将int :: max这样的东西放入语言

为什么必须’导入’Python标准库函数?

我是Python编码的新手,我来自PHP背景.我很好奇为什么你必须在python脚本的顶部“导入”函数.在PHP中,您可以简单地使用以下函数: sleep(10); 以上将导致脚本睡眠10秒.但是,要在python中做同样的事情,似乎我必须导入’时间’功能: import time time.sleep(10) 我的问题是:为什么这

python – 解析的部分评估

我正在研究Python的宏系统(as discussed here),其中一个我一直在考虑的是测量单位.尽管可以在没有宏或通过静态宏的情况下实现度量单位(例如,提前定义所有单元),但我正在考虑允许在运行时动态扩展语法. 为此,我正在考虑在编译时对代码进行一种部分评估.如果给定表达式的解析失败,由

javascript – 如何在V8内部表示对象?

我一直认为javascript中的对象是简单的键值对,即哈希表,但在阅读了this篇文章之后我很困惑. 作者特别说: when you use an object as if it was a hash table, it will be turned into a hash table. 那么,以前到底是怎么回事?特别是整个段落让我困惑.有人能说清楚吗?解决方法:

java – 为什么我们需要提供两次通用信息?

关于Java中泛型的另一个非常基本的问题,直接来自previous question of mine.我们不是通过编写下面的代码两次向编译器提供相同的信息.为什么我们需要在左侧和右侧提供两者? List<Number> numbers = new ArrayList<Number>(); 编辑:正如我在一些答案中看到的那样,它在Java 7以后不再

c – 为什么std :: unique_lock不是从std :: lock_guard派生的

std :: lock_guard和std :: unique_lock接口在它们的公共部分(构造函数和析构函数)中看起来非常相似. 为什么他们之间没有等级关系?解决方法:它们具有不可替代的语义: lock_guard保证在整个生命周期内都被锁定.unique_lock不保证不会遵循“IS A”规则(unique_lock不能成为lock_guard,

JVM是否使用Java下面的Jython实现了语言,还是使用JVM本机?

在使用JVM的语言中,比如Jython,JRuby或任何非Java专用语言,Java是在某个地方“使用”的语言吗? 实施是否意味着: Language Ported to use the JVM + Java somewhere + JVM? 例如,Jython是用Java编写的还是使用其他东西来利用JVM?解决方法:这取决于. 语言标准库的一部分可以用java实

Python:是否有语法级支持解压缩,从元组,到* anonymous *函数的参数?

假设我们有以下内容: args = (4,7,5) def foo(a,b,c): return a*b%c Python方便地允许元组解包: foo(4,7,5) # returns 3 foo(*args) # returns foo(4,7,5), i.e. 3 所以我们不必这样做: foo(t[0], t[1], t[2]) # a repulsive, verbose, and error-pron

为什么在c#中使用关键字而不是赋值?

我在C#深度阅读有关它的部分后,一直在研究C#中的out关键字.我似乎无法找到一个示例,说明为什么只需要分配return语句的值就需要关键字.例如: public void Function1(int input, out int output) { output = input * 5; } public int Function2(int input) { return input

为什么Python使用异常来管理迭代器,为什么不使用其他语言?

在Java中,迭代器有一个hasNext()方法(如果我没记错的话 – 自从我用Java编程以来已经很长时间了,所以细节可能会关闭).当您单步执行迭代器时,查询hasNext()以查看是否应该停止. 在Python中,没有hasNext(),并且当迭代器想要发出应该停止的信号时,它会引发StopIteration异常.为什么不

javascript – 解释器 – 闭包如何捕获它的名字?

在Haskell中考虑以下代码: let factorial n = if n < 2 then 1 else n * factorial (n-1) in factorial 3 我看到解释器以这样的顺序评估程序: >这是一种约束力.首先评估定义并在“in”之后评估该部分. >这是一个定义.评估正文,然后将正文与名称相关联.>这是一个lambda.捕获环境,关

c# – 除了可选参数之外,为什么允许有2个相同的方法签名?

public static bool TryGetDbRow(DbConnection cnctn, string indexName = null) public static bool TryGetDbRow(DbConnection cnctn) 没有字符串作为最后一个参数,将不会调用第一个. 除了可选参数之外,为什么允许使用2个相同的方法签名?解决方法:Eric Lippert在他的博客http:/

为什么PHP不支持多线程?

我到处都读过PHP不支持多线程,但有一些解决方法.但是为什么PHP不支持多线程?对于服务器端脚本语言,这似乎是一个明显的遗漏.解决方法:几年后编辑:你可以使用pthreads进行PHP多线程,但你真的想要吗? 我不确定pthreads是否可用于许多托管环境.坦率地说,我并不急于找出答案. PHP在许多应

为什么C#中的锯齿状数组以相反的方式定义?

假设我有一个名为T的类型.现在让我说我创建了一个T类型的数组,它给了我T [].在代码中,它给出: var myArray = new T[10]; 长度为10.因此,我们可以看到这使得一个包含10个T类型项的数组.如果T是int,string,BinaryWriter或任何标准项,则它可以工作.但是,假设T是一个数组类型,如int [

java – 为什么浮点基元类型在划分并乘以10的某个倍数时会以科学计数法显示?

在下面的示例中,可以看到Java在某些类型的操作中使用具有浮点的基本类型显示结果时具有特殊性,例如除以10的倍数: int num1 = 5; float num2 = num1 / 10000f; System.out.println (num2); 可以是seen here,结果是5.0E-4而不是0.0005. 我知道这是一个科学的符号,这意味着5.0 * 10

c#是否有任何不遵循从左到右评估顺序的陈述?

有关语言设计的空闲问题,请参阅“Does C# have a right hand if like Perl”. 例如,在最近的C系列语言中 z = foo ( a, b, c ); a被评估,然后是b,然后是c,所以从左到右. z = a ? b : c; a被评估,然后是b或c,所以从左到右的顺序. 在Python中,您将条件表达式编写为 z = b if a e