简洁版本 对于那些不想通读我的“案例”的人来说,这就是本质: 什么是推荐的方法,尽量减less新包打破现有代码的机会,即使你写的代码尽可能健壮 ? 在什么时候最好地使用命名空间机制是推荐的方法 a)只使用贡献的软件包(比如在一些R分析项目中)? b)关于开发自己的软件包? 如何避免与正式类 (主要是参考类在我的情况下)的冲突,因为甚至没有一个类似于:: for classes(AFAIU)的命名空间机制? R宇宙的工作方式 这是在我脑海中徘徊了两年的东西,但我不觉得我已经达到了令人满意的解决scheme。 另外我觉得情况越来越糟。 我们看到在CRAN , github , R-Forge等等上的软件包数量不断增加,这真是太棒了。 在这样一个分散的环境中,组成R的代码库(为了简单起见,这就是基础R和贡献R )的代码基础在鲁棒性方面将偏离理想状态:人们遵循不同的惯例,有S3,S4 ,“S4参考课程”等等。如果有一个强制执行的“ 中央清算实例 ”,事情就不可能像“alignment”一样。 没关系。 问题 鉴于上述情况,使用R编写健壮的代码可能非常困难。 并非所有你需要的都在R基础上。对于某些项目,你最终会加载相当多的贡献包。 恕我直言,在这方面最大的问题是命名空间概念在R中使用的方式:R允许简单地写一个特定的函数/方法的名称,而不明确要求它的名称空间(即foo与namespace::foo ) 。 所以为了简单起见,这就是大家正在做的事情。 但是这样一来,名称冲突,破坏代码以及重写/重构代码的需要只是时间问题(或者加载的不同包的数量)。 充其量,你会知道哪些现有的function被新添加的软件包掩盖/重载。 最糟糕的是,你将不知道,直到你的代码中断。 几个例子: 尝试加载RMySQL和RSQLite的时候,他们不太一样 RMongo也会覆盖RMySQL的某些function 预测掩盖了许多与ARIMA相关的function方面的内容 R.utils甚至掩盖了base::parse例程 (我不记得哪些function特别是导致问题,但如果有兴趣,我愿意再看一遍) 令人惊讶的是,这似乎并没有打扰那里的很多程序员。 我试图在r-devel几次提高兴趣,没有任何意义。 使用::运算符的缺点 正如Dominick Samperi 指出的那样,使用::运算符可能会严重影响效率。 在开发你自己的包的时候,你甚至不能在自己的代码中使用::运算符,因为你的代码还没有真正的包,因此也没有名称空间。 所以我将不得不一直坚持foo方式,build立,testing,然后回去改变一切到namespace::foo 。 不是真的。 避免这些问题的可能解决scheme 将每个包中的每个函数重新分配给一个遵循特定命名约定的variables,例如namespace..foo ,以避免与namespace::foo (我在此概述一次)相关的低效率。 […]
我尝试了下面的代码… string pass = ""; Console.Write("Enter your password: "); ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Backspace Should Not Work if (key.Key != ConsoleKey.Backspace) { pass += key.KeyChar; Console.Write("*"); } else { Console.Write("\b"); } } // Stops Receving Keys Once Enter is Pressed while (key.Key != ConsoleKey.Enter); Console.WriteLine(); Console.WriteLine("The Password You entered is : […]
我对C编程相当陌生,并且遇到了位掩码的问题。 有人能向我解释位掩码的一般概念和function吗? 例子非常感谢。
我想实现一个接受date的文本input字段的掩码。 屏蔽值应直接显示在input内部。 像这样的东西: <input type='text' value='____/__/__'> 在这个例子中,我把面具作为一个值来写,但是我的意图是允许人们写一个date,而不用input/或-来分隔几个月,几年和几天。 用户应该能够在显示的字段中input数字,而掩码在用户键入时自动执行格式。 我在其他网站上看到过这种行为,但我不知道它是如何工作的,或者如何自己实现它。
如何限制TextBox只接受大写字母或数字,或禁止放置任何特殊字符? 当然,抓住TextInput事件并处理这里的文本是一块蛋糕,但这是否是正确的方法呢?