当你使用一个字段以及何时在课堂设计中使用一个属性时,任何人都能清楚地表达出来吗?
考虑:
public string Name;
Run Code Online (Sandbox Code Playgroud)
要么:
private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
Run Code Online (Sandbox Code Playgroud)
我意识到第二种方法更加合适和灵活,所以我通常会尝试使用它.
但那为什么我看到人们使用第一种方法呢?他们只是懒惰,还是有一些特定的情况,这是正确的选择?这只是一个偏好问题吗?
我是编程的新手.我有一个学期的计算机科学(我们使用java).我在课程中得到了A,并且能够完成所有指定的工作,但是我不确定我是否真的理解它.我忽略了文本并通过查看示例程序然后反复试验来学习.除了两个知道java或其他OOP语言的人之外,我领先于全班.
我想学习Python.我还将从我拥有的额外部件构建第二台PC并使用linux.基本上,我想增强我对计算机的了解.这就是我的动力.
现在学习python是否有任何好的编程理论书籍会有用?或者我应该详细了解计算机如何在最低级别运行?我认为我不足以问我想要的问题.
我想简单一点,我问我应该知道什么才能充分利用学习python.这不适合职业生涯.这是出于对知识的渴望.我不再是计算机科学专业(它也不会直接应用于我预期的职业生涯.)
我不打算在"30天"或"1周"或其他什么学习.所以,从一个非常基本的水平开始对我来说没问题.
提前致谢.我做了一个搜索,并没有找到我想要的东西.
更新:感谢所有伟大的建议.我发现这个网站在工作,在我的家用电脑上找不到,所以我现在就开始阅读.
这不是一个"纯粹的"编程问题,但由于它深入参与编程理论,我认为最好在这里问一下.
关于P NP问题,摘自http://en.wikipedia.org/wiki/P_versus_NP_problem:"实质上,问题P = NP?问:假设可以快速验证是或否问题的答案.那么,答案本身也可以快速计算出来吗?"
我想知道,验证答案的速度与生成解决方案的速度有什么关系?
我试图说出我认为对于更高阶函数的新想法.重要的是,这里是Python和Haskell中的代码来演示这个概念,后面将对此进行解释.
蟒蛇:
>>> def pleat(f, l):
return map(lambda t: f(*t), zip(l, l[1:]))
>>> pleat(operator.add, [0, 1, 2, 3])
[1, 3, 5]
Run Code Online (Sandbox Code Playgroud)
哈斯克尔:
Prelude> let pleatWith f xs = zipWith f xs (drop 1 xs)
Prelude> pleatWith (+) [0,1,2,3]
[1,3,5]
Run Code Online (Sandbox Code Playgroud)
正如您所能推断的那样,序列正在迭代,利用相邻元素作为传递函数的参数,将结果投影到新序列中.那么,有没有人看到我们创建的功能?这对功能社区的人来说是否熟悉?如果没有,我们怎么命名呢?
---- Update ----
Run Code Online (Sandbox Code Playgroud)
褶皱获胜!
Prelude> let pleat xs = zip xs (drop 1 xs)
Prelude> pleat [1..4]
[(1,2),(2,3),(3,4)]
Prelude> let pleatWith f xs = zipWith f xs (drop 1 xs)
Prelude> pleatWith (+) [1..4]
[3,5,7]
Run Code Online (Sandbox Code Playgroud) python theory haskell functional-programming higher-order-functions
我对编码是否与转义相同的理论感兴趣?根据维基百科
转义字符是对字符序列中的后续字符调用替代解释的字符。
我目前的想法是,它们是不同的。逃避是指您在元字符前面放置一个转义字符以将其标记为与常规字符不同的行为。
另一方面,编码就是将数据转换为另一种形式,并且在想要读取原始内容时,会将其解码回其原始形式。
合法实用程序的哪些算法太复杂而无法实现?
让我说清楚:我不是在寻找像当前渐近最优矩阵乘法算法这样的算法,这种算法合理实现但是有一个常数使得它在实践中无用.我正在寻找可能具有实用价值的算法,但是编码非常困难,以至于它们从未实现过,只能在非常人为的设置中实现,或者只能用于非常特殊的应用程序.
同样受欢迎的是几乎不可能实现的算法,它们具有良好的渐近性但可能具有较差的实际性能.
我听说使用%大多数编程语言中的模数运算符可以实现这一点.真正的问题是,怎么样?我不熟悉模数是如何工作的,所以我在过去使用它时遇到了困难.鉴于目前的时间是自1970年以来的几秒钟,1307758473.484我怎样才能计算出使用模数的天数,即几小时,即几分钟?
我基本上打算像这样格式化:"5年,10天,12小时,7分钟和18.56秒".我该怎么做?我真的很有兴趣学习这背后的逻辑,对简单的插入式解决方案不感兴趣.
当然这在java(迄今为止)中是一个不可能的陈述,但理想情况下我想实现它,因为它是许多迭代的核心.例如,第一次多次被称为我正在创建650,000次以上ArrayList.不幸的是,现实是我的实际代码没有循环set内部else; 因此就越过两者add,然后将set命令和浪费时间.
之后我还在另一个循环中,它只执行集合,因为数据已经创建,并且这是多嵌套的,因此它是一个漫长的过程.
ArrayList<Integer> dataColLinker = new java.util.ArrayList<Integer>();
...
...
public void setLinkerAt( int value, int rowIndex) {
...
while(rowIndex >= dataColLinker.size()) {
dataColLinker.add(value);
} else {
dataColLinker.set(rowIndex, value);
}
Run Code Online (Sandbox Code Playgroud)
任何想法或理论?在if语句和ArrayList命令等方面,我不确定java的速度
我试图按照法律的德米特(见http://en.wikipedia.org/wiki/Law_of_Demeter,http://misko.hevery.com/code-reviewers-guide/flaw-digging-into-collaborators/)因为我可以看到它的好处,但是当涉及到域对象时,我变得有点卡住了.
域对象自然有链,有时需要显示有关整个链的信息.
例如,一个购物篮:
每个订单包含用户,交货信息和项目清单每个订单项目包含产品和数量每个产品都有名称和价格.每个用户都包含一个名称和地址
显示订单信息的代码必须使用有关订单,用户和产品的所有信息.
当然,通过订单对象获取此信息更好,更可重用,例如"order.user.address.city",而不是上面列出的所有对象的某些代码,然后将它们分别传递给代码?
欢迎提出任何意见/建议/提示!
甲超图是在其中边缘可以连接许多顶点的图的概括.最近我看到很多关于超图(分段,聚类等)的出版物.所以我的问题是:
我对普通图有直觉.例如,图可用于表示贝叶斯网络的传输网络或繁忙规则.但我对超图没有这样的直觉,它们对我来说绝对违反直觉.