Tag: 语言function

为什么C#不实现索引属性?

我知道,我知道… Eric Lippert对这类问题的回答通常是“ 因为不值得花费devise,实施,testing和logging它 ”。 但是,我仍然想要一个更好的解释…我正在阅读关于新的C#4function的博客文章 ,以及有关COM Interop的部分,以下部分引起了我的注意: 顺便说一下,这段代码使用了一个新的特性:索引属性(仔细看看Range后面的方括号)。 但是这个特性只适用于COM interop; 您不能在C#4.0中创build自己的索引属性 。 好的,但是为什么? 我已经知道并且后悔不可能在C#中创build索引属性,但是这句话让我再次想到它。 我可以看到几个很好的理由来实现它: CLR支持它(例如, PropertyInfo.GetValue有一个index参数),所以很遗憾我们不能在C#中利用它。 它支持COM interop,如文章中所示(使用dynamic分派) 它是在VB.NET中实现的 已经有可能创build索引器,也就是将索引应用到对象本身,所以把想法扩展到属性,保持相同的语法并用属性名称replace它可能没什么大不了的 这将允许写这样的事情: public class Foo { private string[] _values = new string[3]; public string Values[int index] { get { return _values[index]; } set { _values[index] = value; } } } 目前我唯一的解决方法是创build一个实现索引器的内部类( ValuesCollection ),并更改Values属性,以便返回该内部类的实例。 这很容易做,但烦人…所以也许编译器可以为我们做! […]

之间的区别。 和:在Lua

我很困惑函数调用之间的区别. 和通过: > x = {foo = function(a,b) return a end, bar = function(a,b) return b end, } > return x.foo(3,4) 3 > return x.bar(3,4) 4 > return x:foo(3,4) table: 0x10a120 > return x:bar(3,4) 3 什么是:在做什么?

为什么私人领域是私人的types,而不是实例?

在C#(以及许多其他语言)中,访问相同types的其他实例的私有字段是完全合法的。 例如: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if(anotherFoo.aBool) … } } 由于C#规范 (3.5.1节,3.5.2节)规定私有字段的访问是一种types,而不是一个实例。 我一直在和一位同事讨论这个问题,我们试图想出一个这样的原因(而不是限制对同一个实例的访问)。 我们可以提出的最好的论点是平等检查,其中类可能想访问私人领域,以确定与另一个实例的平等。 还有其他的原因吗? 或者一些绝对意味着它必须这样或那样的工作的黄金理由是完全不可能的?

在java中parseInt和valueOf之间的区别?

这两种方法有什么区别? 他们似乎做了完全一样的事情(也适用于parseFloat() , parseDouble() , parseLong()等,他们是如何不同于Long.valueOf(string) ? 编辑:另外,这些是哪个更好,常规使用更多?

纯function编程的效率

有没有人知道什么是纯粹的function编程,而不是命令性地(即允许副作用)编程时可能发生的最糟糕的渐近放缓? 来自itowlson的评论澄清 :有没有什么问题最着名的非破坏性algorithm比最好的已知破坏性algorithm渐近地差,如果是这样,多less?

最喜欢的Django提示和function?

受到“隐藏的特征…”这个问题的启发,我很好奇听到你最喜欢的Django技巧,或者你所知道的一些鲜为人知却很有用的function。 请每个答案只包含一个提示。 添加Django版本的要求,如果有的话。

逻辑运算符的书面版本

这是我见过的唯一的地方, or在C ++中not被列为实际操作符。 当我在NetBeans中写了一个testing程序的时候,我得到了红色的下划线,就好像有一个语法错误,并认为这个网站是错误的,但是它是错误的,因为它是按照预期编译和运行的。 我可以看到! 被赞成而not但是可读性and & or似乎比他们的语法兄弟更大。 为什么这些版本的逻辑运算符存在,为什么似乎没有人使用它? 这是真正有效的C ++还是与C语言包含的某种兼容性?

在Fortran中正确使用模块,子例程和函数

我最近在向我的FORTRAN程序添加函数时了解了interface block 。 一切工作很好,整齐,但现在我想添加第二个function到interface block 。 这是我的接口块: interface function correctNeighLabel (A,i,j,k) integer :: correctNeighLabel integer, intent(in) :: i,j,k integer,dimension(:,:,:),intent(inout) :: A end function function correctNeighArray (B,d,e,f) character :: correctNeighArray integer, intent(in) :: d,e,f character, dimension(:,:,:),intent(inout) :: B end function end interface 在我看来,这可能不是最好的select。 我已经研究过子程序,但我不是很确信这是正确的解决scheme。 我所做的是相对简单的,我需要将parameter passing给子例程,但是我所看到的所有子例程都是复杂的(即对于函数来说太复杂),并且b)不采取参数performance得像操纵variables而不传递给它们。 我没有真正地查看模块,但从我所看到的是不正确的使用。 任何build议什么时候使用,以及如何去做最好的将非常感激。

什么是枚举定义中的代字号(〜)?

我总是感到惊讶,即使现在一直使用C#,我仍然设法find我不知道的事情… 我已经试过在网上search这个,但是在search中使用“〜”对我来说不是很好,我也没有在MSDN上find任何东西(不是说它不存在) 我最近看了这段代码,代字符(〜)是什么意思? /// <summary> /// Enumerates the ways a customer may purchase goods. /// </summary> [Flags] public enum PurchaseMethod { All = ~0, None = 0, Cash = 1, Check = 2, CreditCard = 4 } 我有点惊讶地看到它,所以我试图编译它,它的工作…但我仍然不知道它是什么意思/做什么。 任何帮助?

分区Java 8stream

如何在Java 8 Stream上实现“分区”操作? 通过分区我的意思是,将一个stream划分成给定大小的子stream。 不知何故,它将与Guava Iterators.partition()方法相同,只是希望分区是懒惰评估的Streams而不是List。