这不是一个如何实现它的问题,但这个方法的目的是什么?我的意思是 - 好吧,我知道在搜索时需要它,但为什么它被埋没为"对象"类的方法?
故事发生了 - 我有一些类,默认情况下(逻辑意义上)对象不具有可比性.每次要比较/搜索它们时,都必须准确指定匹配方式.在这种情况下最好的是:
没有像Equals这样无处不在的方法,问题解决了,没有程序员(我班级的用户)会因为在搜索时省略自定义匹配而陷入陷阱
但既然我无法改变C#
隐藏继承的,不需要的方法来阻止调用(编译时)
但这也需要改为C#
override Equals并抛出异常 - 至少在运行时通知程序员
所以我问,因为我被迫丑陋(c),因为(b)是不可能的,因为缺乏(a).
简而言之 - 迫使所有对象具有可比性(Equals)的原因是什么?对我来说,这是一个过分的假设.提前感谢您的启示:-).
我尝试在基于 WPF 的项目(VS2010、Net4.0)上使用 ILMerge,但无法运行合并的可执行文件。所以我创建了两个非常简单的项目
编译每个项目后,我得到一个可执行文件(所以合并,并没有真正合并任何东西,它只是为了测试)。每个可执行文件当然都有效。
然后我以这种方式“合并”每个可执行文件:
"C:\Program Files\Microsoft\ILMerge\ilmerge"
/targetplatform:v4,c:\Windows\Microsoft.NET\Framework\v4.0.30319
/lib:c:\Windows\Microsoft.NET\Framework\v4.0.30319\wpf
/out:Merged.exe MyApplication.exe
Run Code Online (Sandbox Code Playgroud)
(我只是为了可读性而调用了多行)。好的,现在控制台应用程序合并并像以前一样运行,wpf 应用程序合并没有任何错误,但我无法运行它。我的意思是,我打字
Merged.exe
Run Code Online (Sandbox Code Playgroud)
任务栏闪烁,但什么也没有显示——没有窗口,没有错误,什么也没有。
那么我应该如何合并 WPF 应用程序?
我有这样的代码
var ls = src.iter.toList
src.iter = ls.iterator
Run Code Online (Sandbox Code Playgroud)
(这是我的迭代器包装器的复制构造函数的一部分),它读取源迭代器,并在下一行中将其设置回来.问题是,这两行必须是原子的(特别是如果你认为我改变了复制构造函数的来源 - 我不喜欢它,但很好......).
我读过有关Actors但我看不到它们是如何适合的 - 它们看起来更像是异步执行的机制.我已经阅读了Java解决方案并在Scala中使用它们,例如:http://naedyr.blogspot.com/2011/03/atomic-scala.html
我的问题是:什么是使Scala成为原子操作最多的Scala方法?我不想为此使用一些重型火炮,而且我也不想使用一些外部资源.换句话说 - 看起来和感觉"正确"的东西.
我喜欢上面链接中提供的解决方案,因为这正是我所做的 - 交换引用.如果我理解正确,我只会保护那两行,而其他代码不需要改变!但我会等待明确的答案.
因为每个第N个问题,而不是回答我读"但为什么你使用...",这里: 如何在Scala中复制迭代器?:-)
我需要复制iterator(制作一个fork),这样的解决方案是我读到的最"正确".问题是,它破坏了原始的迭代器.
锁
例如:http: //www.ibm.com/developerworks/java/library/j-scala02049/index.html
我在这里看到的唯一问题是,我必须锁定这两行以及iter上的所有其他用法.现在这是次要的,但是当我添加一些代码时,很容易忘记添加额外的锁.
我不是说"不",但我没有经验,所以我想从熟悉Scala的人那里得到答案,指出一个方向 - 哪种解决方案最适合这样的任务,并且从长远来看.
不可变的迭代器
虽然我很欣赏Paradigmatic的解释,但我不知道这种方法如何适合我的问题.问题是IteratorWrapper类必须包装迭代器 - 即原始迭代器应隐藏在类中(通常通过将其设为私有来完成).hasNext()和next()等方法也应该包装好.通常next()会改变对象的状态(迭代器),所以在不可变的IteratorWrapper的情况下,它应该返回新的IteratorWrapper和next()的状态(成功与否).如果raw next()失败,另一个解决方案是返回NULL,无论如何,这使得使用这样的IteratorWrapper不是很方便.
更糟糕的是,仍然没有简单的方法来复制这样的IteratorWrapper.
所以要么我想念一些东西,要么实际上经典的方法使得一段代码原子化更清晰.因为所有负担都包含在类中,并且用户不必为IteratorWrapper处理数据的方式付出代价(在这种情况下是原始迭代器).
我在Scala中编写了我的第一个控制台应用程序,并在Scala中编写了我的第一个Swing应用程序 - 在后者的情况下,入口点是我的对象扩展SimpleSwingApplication的顶级方法.
但是我仍想通过main方法,并从那里调用top - 或执行其他等效操作(如创建窗口和"运行"它).
怎么做?
如果你好奇为什么,GUI是可选的,所以我想解析命令行参数然后决定显示(或不显示)应用程序窗口.
考虑这样的方法:
def clearlnOut(coll : Any*)
{
clearOut(coll:_*,"\n") // error
}
def clearOut(coll : Any*)
{
...
Run Code Online (Sandbox Code Playgroud)
编译器说:
错误:此处不允许使用`:_*'注释(此类注释仅允许在*参数的参数中使用)
现在我很困惑.很明显使用可变参数,如何正确传递这种增强的"集合"?
我可以将我的应用程序作为独立应用程序(例如从命令行)或一种特定方式启动 - 它直接来自"源代码",即使用IntelliJ.
有没有办法检测应用程序是否从IntelliJ启动?只有这个,二元决定.
解决方法很多,在启动时添加了额外的选项,但是我正在寻找直接解决方案,对于C#这样 如何知道应用程序是由调试器启动的(VisualStudio)C#
该解决方案可以对任何IDE有效,但必须至少对IntelliJ有效.
对于那些(包括我)寻求准备使用代码(Scala代码):
object ProgramInfo
{
val isStandaloneApp = sun.management.ManagementFactory.getRuntimeMXBean().getInputArguments.isEmpty
val isDebugMode = scala.collection.JavaConversions.iterableAsScalaIterable(sun.management.ManagementFactory.getRuntimeMXBean().getInputArguments).exists(it => it.startsWith("-agentlib"))
}
Run Code Online (Sandbox Code Playgroud)
它不适用于复杂的情况,但是如果你没有将大量参数传递给JVM,那就没关系了.
当您从异常中获得堆栈跟踪时,您将获得文件和行号.我的报告需要这样的东西,所以我可以非常快地找到原因.
我特别关注LINE和FILE宏.Scala中有这样的东西吗?
这是从以下位置复制的示例:
如何在 C# 中读取 app.config 中的自定义配置部分
我想阅读 app.config 中的以下自定义部分:
<StartupFolders>
<Folders name="a">
<add folderType="Inst" path="c:\foo" />
<add folderType="Prof" path="C:\foo1" />
</Folders>
<Folders name="b">
<add folderType="Inst" path="c:\foo" />
<add folderType="Prof" path="C:\foo1" />
</Folders>
</StartupFolders>
Run Code Online (Sandbox Code Playgroud)
这也是我的情况。但是,我不想创建自定义类来处理值,在 web.config 中定义此类,然后最终使用它。对于我的需求来说,它很重。
相反,我想做一些非常简单的事情——以 XML 形式检索一个部分。然后我可以使用常规 Linq.Xml 来解析它。这样,我不需要为每个部分创建新的类,也不需要声明它们。就我的目的而言,一方面它足够了,另一方面又很小(我做了一次,嵌套部分的键值映射器)。即完美。
唯一缺少的部分是(我的问题)——如何获取 XML 形式的 web.config 部分?关于该部分的注意事项:
因此,我并不是在寻找一种解决方法,如何将整个部分压缩为 appSettings 中的值,但我确实在寻找一种方法来获取适当的部分作为 XML。
我想从 ConfigManager (!) 获取它,因为这样我就不必处理解析应该读取哪个 web.config 等问题。即,比手动模仿 web.config 优先级更少出错的机会。
请原谅我提醒这一点,但请避免“答案”,你不应该这样做,每个部分使用自定义类等。我已经考虑过这一点,并选择反对它。
重复警告:这篇文章不是关于屏幕开/关,而是关于键盘锁(这些问题不一样)。
幸运的是,键盘锁解锁时会直接发生事件,但是键盘锁锁定时事件又如何呢?我来回搜索了Android API事件列表,但根本看不到它(短语“锁定”-无,短语“ keyguard”-一个,表示关闭状态)。
我知道解决方法-等待屏幕关闭事件,在循环中检查键盘锁的状态并等待屏幕打开事件,因为从屏幕关闭开始,手机只能在两个方向上移动-手机将被锁定或屏幕将再来一次。并不是大量的代码,但是无论如何都会被黑客入侵,所以我希望我错过了手册中的内容,并且有直接的事件用于键盘锁锁定。
从CUDA设备(!)获取属性的众所周知的代码是枚举所有设备,并从中获取属性.然后我看到这样一块,激活给定的设备.
我有反向问题 - 假设已经选择了设备,我想获得它的属性(活动的),而不是系统中存在的所有设备.
我希望我以正确的方式写这个,因为我是CUDA的新手.