Tag: 语言特性

你有没有限制自己使用语言function的子集?

你有没有限制自己使用语言function的一个子集,更重要的是,为什么? 我很想知道谁select只使用某些语言特性,为了在诸如(但不限于)内存使用,执行速度或旧的可读性和可维护性等方面赢得很大的胜利,避免使用其他语言。 这样做会产生预期的结果,或者只是阻碍了软件生产的其他方面。 有没有关于这个主题值得分享的警告故事或者成功的故事?

.NET中类加载器的等价类

有谁知道是否有可能在.NET中定义“java自定义类加载器”的等价物? 给一点背景: 我正在开发一种以CLR为目标的新的编程语言,称为“自由”。 该语言的特点之一是它能够定义“types构造函数”,它是编译器在编译时执行的方法,并生成types作为输出。 它们是generics的泛化(语言确实具有普通的generics),并允许这样的代码被编写(使用“Liberty”语法): var t as tuple<i as int, j as int, k as int>; ti = 2; tj = 4; tk = 5; 其中“元组”的定义如下: public type tuple(params variables as VariableDeclaration[]) as TypeDeclaration { //… } 在这个特定的例子中,types构造函数tuple提供了类似于VB和C#中的匿名types的东西。 然而,与匿名types不同,“元组”具有名称,可以在公共方法签名中使用。 这意味着我需要一种types的方式,最终最终由编译器发出,可以跨多个程序集共享。 例如,我想要 在程序集A中定义的tuple<x as int>最终与程序集B中定义的tuple<x as int>相同。 这个问题当然就是Assembly A和Assembly B将会在不同的时间被编译,这意味着他们最终都会发布他们自己的元组types的不兼容版本。 我研究了使用某种“types擦除”来做到这一点,所以我会有一个像这样的一堆types的共享库(这是“Liberty”语法): class tuple<T> { public […]

什么是Cmacros有用?

我已经写了一些C ,我可以很好地阅读它,以便大致了解它在做什么,但是每次遇到一个macros,它都会把我完全抛到脑后。 我最终不得不记得这个macros是什么,并且在我读的时候把它代入我的脑海。 我遇到的那些直观易懂的东西,总是像小小的function,所以我一直在想,为什么它们不只是function。 我可以理解,需要为预处理器中的debugging或跨平台构build定义不同的构buildtypes,但是定义任意replace的能力似乎仅用于使已经很难理解的语言更难以理解。 为什么为C引入这样一个复杂的预处理器? 还有没有人有一个使用它的例子,这将使我明白为什么它似乎仍然被用于除了简单的目的以外#debug样式条件编译? 编辑: 读了一些答案,我仍然不明白。 最常见的答案是内联代码。 如果inline关键字没有这样做,那么它有一个很好的理由不这样做,或实施需要修复。 我不明白为什么需要一个完全不同的机制,这意味着“真正内联这个代码”(除了内联之前的代码)。 我也不理解被提到的“如果太愚蠢的function”的想法。 当然,任何接受input和产生输出的代码最好放在一个函数中。 我想我可能没有得到它,因为我不习惯写C的微观优化,但预处理器只是一个复杂的解决scheme,几个简单的问题。

Ruby中的方法:对象与否?

受到这个讨论的启发,在googlesearch一下后,我无法find关于Ruby中的方法的一个非常简单的问题的答案:方法对象还是不是? 在这里和那里有不同的意见,我真的很想听到,比方说,深入的解释。 我知道Object#method方法,它采用一个方法名并返回一个Method实例,但另一方面,你可以用块做类似的事情,使它们成为Proc实例,块不是对象,那么什么使方法有所不同呢?

expression与声明

我问的问候C#,但我认为它在大多数其他语言相同。 有没有人有一个好的expression和声明的定义,有什么区别?