Questions tagged «language-features»

语言功能是编程语言的一个独特方面,例如绑定规则,词法设计或类型系统的各个方面。

10
为什么python dict.update()不返回对象?
我正在尝试: award_dict = { "url" : "http://facebook.com", "imageurl" : "http://farm4.static.flickr.com/3431/3939267074_feb9eb19b1_o.png", "count" : 1, } def award(name, count, points, desc_string, my_size, parent) : if my_size > count : a = { "name" : name, "description" : desc_string % count, "points" : points, "parent_award" : parent, } a.update(award_dict) return self.add_award(a, siteAlias, alias).award …

3
VB.NET是否等效于C#属性速记?
是否有一个等效于C#的VB.NET: public string FirstName { get; set; } 我知道你能做 Public Property name() As String Get Return _name.ToString End Get Set(ByVal value As String) _name = value End Set End Property 但我似乎无法在Visual Basic速记上找到答案。

12
为什么JavaScript中会有一个“空”值?
在JavaScript中,有两个值基本上表示“我不存在”- undefined和null。 程序员未分配任何东西undefined的属性将是,但是为了使该属性成为null,null必须明确为其分配一个属性。 我曾经认为有必要,null因为undefined是原始值和null对象。不是,即使typeof null将产生'object':实际上,它们都是原始值-这意味着它们都不是,undefined也不null能从构造函数中返回,因为这两个值都将转换为空对象(必须抛出错误以声明构造函数失败)。 它们都false在布尔上下文中求和。我能想到的唯一真正的区别是,一个在数字上下文中求值NaN,另一个0在求值。 那么为什么同时存在这两个问题,undefined又null是否使null试图找出属性是否已设置的错误检查程序员感到困惑呢? 我想知道的是,如果有人有一个合理的例子,说明有必要使用null它,而不能用来表示undefined。 因此,普遍的共识似乎是undefined指“没有这种财产”,而null意味着“该财产确实存在,但没有价值”。 如果JavaScript实现实际上可以执行此行为,那么我可以接受-但是它undefined是一个完全有效的原始值,因此可以轻松地将其分配给现有属性以破坏此合同。因此,如果要确定属性是否存在,则必须使用in运算符或hasOwnProperty()仍然使用。所以再次:什么是用于分隔值的实际使用undefined和null? 我实际使用undefined时,我想不再使用取消设置属性的值,但我不想delete。我应该null改用吗?

30
HTML的隐藏功能
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 HTML是最广泛使用的语言(至少作为一种标记语言)尚未得到应有的重视。 考虑到它已经存在了很多年,因此FORM / INPUT控件之类的东西仍然保持不变,没有添加任何新控件。 因此,至少从现有功能中,您知道不为人所知但非常有用的任何功能。 当然,这个问题是基于以下方面: JavaScript的 隐藏功能CSS的 隐藏功能C#的 隐藏功能VB.NET的 隐藏功能Java的 隐藏功能经典ASP的 隐藏功能ASP.NET的 隐藏功能Python的 隐藏功能Python的隐藏功能TextPad的 隐藏功能Eclipse的隐藏功能 不要提及HTML 5.0的功能,因为它正在起草中 请为每个答案指定一项功能。




18
Scala和Java代码示例,其中Scala代码看起来更简单/行更少?
我需要一些Scala和Java代码的代码示例(并且我也对此感到很好奇),这些示例表明Scala代码比用Java编写的代码更简单,简洁(当然,两个示例都应该解决相同的问题)。 如果只有带有注释的Scala示例,例如“这是Scala中的抽象工厂,在Java中看起来会很麻烦”,那么这也是可以接受的。 谢谢! 我最喜欢的所有接受和这个答案

4
逻辑运算符的书面版本
这是我见过的唯一地方and,or并且not在C ++中被列为实际的运算符。当我在NetBeans中编写测试程序时,我得到了红色下划线,好像有语法错误,并认为该网站是错误的,但是NetBeans却是错误的,因为它按预期进行了编译和运行。 我可以看到!它受到青睐,not但是and&& 的可读性or似乎比他们的语法兄弟更好。为什么存在这些版本的逻辑运算符,为什么似乎没有人使用它?这是真正有效的C ++还是该语言随附的与C的某种兼容性?

3
当本征类看起来如此相似时,为什么本征类不等同于self.class?
我在某处错过了备忘录,希望您能向我解释。 为什么对象的本征分类不同于self.class? class Foo def initialize(symbol) eigenclass = class << self self end eigenclass.class_eval do attr_accessor symbol end end end 我将本征类等同于的逻辑class.self很简单: class << self是一种声明类方法而不是实例方法的方法。这是的快捷方式def Foo.bar。 因此,在对类对象的引用内,返回self应与相同self.class。这是因为class << self将设置self为Foo.class用于定义类方法/属性。 我只是感到困惑吗?还是,这是Ruby元编程的一个trick俩?

9
为什么C#不实现索引属性?
我知道,我知道...埃里克·利珀特(Eric Lippert)对此类问题的回答通常类似于“,因为它不值得设计,实施,测试和记录它的成本”。 但是,我仍然希望有一个更好的解释……我正在阅读有关C#4新功能的博客文章,并且在有关COM Interop的部分中,以下部分引起了我的注意: 顺便说一句,此代码使用了另一个新功能:索引属性(仔细研究Range之后的方括号。)但是,此功能仅适用于COM互操作。您不能在C#4.0中创建自己的索引属性。 好的,但是为什么呢?我已经知道并感到遗憾,因为无法在C#中创建索引属性,但是这句话让我重新考虑了一下。我可以看到实现它的几个很好的理由: CLR支持它(例如,PropertyInfo.GetValue有一个index参数),所以很遗憾我们不能在C#中利用它 如文章所示(使用动态调度),它支持COM互操作 它在VB.NET中实现 已经可以创建索引器,即将索引应用于对象本身,因此将思想扩展到属性,保持相同的语法并仅替换this为属性名称可能没什么大不了的 这样可以写这样的东西: public class Foo { private string[] _values = new string[3]; public string Values[int index] { get { return _values[index]; } set { _values[index] = value; } } } 目前,我知道的唯一解决方法是创建一个ValuesCollection实现索引器的内部类(例如),并更改Values属性,以使其返回该内部类的实例。 这很容易做到,但是很烦人……所以也许编译器可以为我们做到!一种选择是生成实现索引器的内部类,并通过公共通用接口公开它: // interface defined in the namespace System public interface …

30
最好的JavaScript语法糖
这是一些宝石: 文字: var obj = {}; // Object literal, equivalent to var obj = new Object(); var arr = []; // Array literal, equivalent to var arr = new Array(); var regex = /something/; // Regular expression literal, equivalent to var regex = new RegExp('something'); 默认值: arg = arg || …

18
C宏有什么用?
我已经写了一些C语言,而且我读得足够好,可以大致了解它的功能,但是每次遇到宏时,它都会使我完全失望。我最终不得不记住宏是什么,并在阅读时将其替换在脑海中。我遇到的那些直观易懂的东西总是像小的迷你函数,所以我一直想知道为什么它们不只是函数。 我可以理解需要在预处理器中为调试或跨平台构建定义不同的构建类型,但是定义任意替换的功能似乎仅对使本来就很难理解的语言有用。 为什么为C引入了如此复杂的预处理器?还有没有人有使用它的示例,这会让我理解为什么#debug样式的条件编译时,为什么它似乎仍然用于简单的目的以外的用途? 编辑: 阅读了许多答案后,我仍然听不懂。最常见的答案是内联代码。如果inline关键字不这样做,则它有充分的理由不这样做,或者实现需要修复。我不明白为什么需要一种完全不同的机制来表示“真正内联此代码”(除了在内联之前编写的代码)。我也不理解提到的想法,即“如果它太愚蠢而无法放入函数中”。当然,任何需要输入并产生输出的代码都最好放在函数中。我想我可能不明白,因为我不习惯于编写C的微观优化,但是预处理器感觉就像是解决一些简单问题的复杂解决方案。


2
总和类型-为什么在Haskell中show(Int | Double)与`(show Int)|不同?(显示双)`
为什么这些不相等? show $ if someCondition then someInt else some double 和 if someCondition then show someInt else show someDouble 我了解,如果您将if ... else第一个示例中的部分本身与一个表达式隔离开,那么您就无法用匿名和类型来表示其类型Int | Double,就像您可以在TypeScript中轻松进行的操作(提及TypeScript,因为它是我经常使用的语言,该语言支持Sum类型),因此必须诉诸使用Either数据,然后再基于调用show。 我在这里给出的示例很简单,但对我来说,认为“好吧,我们将要显示某些东西,而某些东西取决于someCondition”,而不是“好吧,如果someCondition为true,则显示someInt,否则显示someDouble”,并且也允许减少代码重复(此处的显示重复了两次,但它也可能是一个长函数的应用程序,而不是if ... else可能要考虑的> 2个分支) 在我看来,对于编译器而言,检查构成求和类型的每种类型(在此处Int | Double)是否可以用作show函数的参数并确定类型是否正确应该很容易。更好的是,无论参数的类型如何,show函数总是会返回string,因此编译器不必随身携带所有可能的“分支”(因此所有可能的类型)。 是否选择不存在这样的功能?还是我认为实施起来更加困难?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.