"图灵完成"的含义是什么意思?
你可以给出一个简单的解释,而不会涉及太多的理论细节吗?
我有一个类Animal及其子类Dog.我经常发现自己编写以下代码:
if (animal is Dog)
{
Dog dog = animal as Dog;
dog.Name;
...
}
Run Code Online (Sandbox Code Playgroud)
对于变量Animal animal;.
是否有一些语法允许我写如下:
if (Dog dog = animal as Dog)
{
dog.Name;
...
}
Run Code Online (Sandbox Code Playgroud) 这个词似乎在许多情况下被使用.我能想到的最好的是它们意味着一个无法改变的变量.是不是常数/决赛(你是Java!)是为了什么?
许多人似乎都同意,Singleton模式有许多缺点,有些甚至建议完全避免这种模式.这里有一个很好的讨论.请将有关Singleton模式的任何评论指向该问题.
我的问题:是否有其他设计模式,应该避免或小心使用?
我需要一些资源来讨论如何将软件设计为可扩展的,即让其他人可以编写添加功能的附加组件/插件.
您有什么推荐的吗?那里有讨论这个主题的书吗?
我更喜欢那些简短而重要的东西; 一点理论和一堆具体的例子.
我不是针对特定语言,我希望能够理解核心思想,以便我可以用任何语言实现它.
出于同样的原因,我宁愿不使用其他人构建的框架(除非框架不是非常高级,即不会隐藏太多),目前我只想教育自己主题和实验以各种方式实现它.此外,框架通常假定用户对该主题的了解.
UPDATE
我不是在询问OOP或者是否允许我的类被继承.我所说的是设计一个将部署在系统上的应用程序,以便在部署之后可以通过第三方附加组件进行扩展.
例如,Notepad ++有一个插件架构,您可以将.dll文件放在plugins文件夹中,并为不存在的应用程序添加功能,例如颜色选择或片段插入,或许多其他内容(广泛的功能).
我对Liskov替换原则的理解是,对于派生类,基类的某些属性是真的或某些实现的基类行为.
我想这意味着当一个方法在基类中定义时,它永远不应该在派生类中被覆盖 - 因为那么替换基类而不是派生类会产生不同的结果.我想这也意味着,拥有(非纯)虚拟方法是件坏事吗?
我想我可能对这个原则有错误的理解.如果我不这样做,我不明白为什么这个原则是好的做法.谁可以给我解释一下这个?谢谢
liskov-substitution-principle design-principles solid-principles
有人声称Scala的类型系统是图灵完整的.我的问题是:
这有正式的证据吗?
如何在Scala类型系统中进行简单的计算?
这对Scala有什么好处 - 语言?这是否使Scala在某种程度上比没有图灵完整类型系统的语言更"强大"?
我想这通常适用于语言和类型系统.
我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":

这是代码: -
import Foundation
import UIKit
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//var dailyStatement = greet("John", "Tuesday")
var dailyStatement = greet("John", day: "Tuesday")
println(dailyStatement)
}
func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)."
}
}
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我发现了这篇文章:方法和函数之间的区别,在我看来,我在类中声明的函数实际上被称为方法.因此,与用于调用函数的语法相比,我用于调用方法的语法是不同的.
我在Objective-C编程时从未意识到这种差异.
Swift中的函数和方法有什么区别?
我们何时使用函数?何时使用Swift中的方法?
对于单元测试,我需要模拟几个依赖项.其中一个依赖项是实现接口的类:
public class DataAccessImpl implements DataAccess {
...
}
Run Code Online (Sandbox Code Playgroud)
我需要设置这个类的模拟对象,当提供一些指定的参数时返回一些指定的值.
现在,我不确定的是,模拟界面或类是否更好,即
DataAccess client = mock(DataAccess.class);
Run Code Online (Sandbox Code Playgroud)
与
DataAccess client = mock(DataAccessImpl.class);
Run Code Online (Sandbox Code Playgroud)
它在测试方面有什么不同吗?什么是首选方法?
我看到Scala社区中有很多人建议避免像"瘟疫一样"进行分类.使用子类型的各种原因是什么?有哪些替代方案?
scala ×2
c# ×1
casting ×1
function ×1
if-statement ×1
invariants ×1
java ×1
junit ×1
liskov-substitution-principle ×1
methods ×1
mocking ×1
oop ×1
plugins ×1
resources ×1
swift ×1
theory ×1
type-systems ×1
unit-testing ×1