有时候我根本记不住如何编写 for 循环。 不是那种好笑的我记不住“心理学”怎么拼写,而是我真的需要花几秒钟才能想出来。 比如,去谷歌搜索“for loop PHP”,点击一个看起来有用的结果,复制粘贴,然后修改一下。
我主要是一个前端开发者,但我本质上是一个专业的程序员。 这不是很荒谬和尴尬吗? 随便啦。
在任何一天,我都会接触很多不同的语言。 for 循环在每种语言中都是不同的。 它们是这样的
for i in 1..5
puts i
end
for (i = 0; i < 5; i++) {
console.log(i);
}
for ($i = 1; $i < 5; $i++) {
echo $i;
}
@for $i from 1 through 5 {
.n-#{$i} { color: red; }
}
- (1..16).each do |i|
%div #{i}
for i in [1...16]
console.log(i)
它们都不同。 没有任何一个很难理解,但是 for 循环可能是你需要在某种语言中编写的最简单的结构,所以你可以想象它会变得更糟。
所以呢?
所有这些语言都有充分的理由解释为什么它们以这种方式运行。 将正确的字符组合到适当的位置以使它们完成工作是一件小麻烦。
重要的是
- 我知道什么是
for循环 - 我知道什么时候需要使用
for循环 - 我知道
for循环和其他循环之间的区别 - 我知道
for循环的潜在风险
不要在意语法,重要的是精神。
这里可能有一些类比可以与 https://css-tricks.cn/blue-box/ 和 https://css-tricks.cn/interviewing-front-end-engineer-san-francisco/ 进行比较。
说得好,Chris。
我花费大量时间在 WordPress 和 PHP 上,但我仍然发现自己不得不返回谷歌搜索某些我不经常使用的结构、函数等。
当我切换语言时,情况变得更糟。 出于某种原因,PHP 不喜欢我尝试使用以下命令打印内容:
alert $myvar;难以置信…
我认为最好的解决方案是使用像 Sublime Text 3 这样的编辑器,搭配好的代码片段,然后你就可以在任何语言中更快更容易地完成各种操作。
Ralph,你知道 ST3 什么时候发布吗?
它已经发布了 https://text.sublime.net.cn/3
实际上版本 3 还在测试阶段。
它已对公众开放,已发布。
为了保持精神:Haxe 中的循环也不同 :)
for (i in 0…5)
{
trace(i);
}
我总是告诉所有想学习编程的人,重要的是代码的精神,而不是语言的语法。
我想把这篇文章翻译成波斯语
在 JavaScript 中,我的
for循环大多看起来像这样这有点过头了吧? 对于性能密集型任务或较长的迭代不推荐使用。
不幸的是,这并不总是受支持的。 在 IE9 之前的版本中,如果不创建 polyfill,它将无法工作。 不过这不是什么大问题。
它只适用于数组,因为它是一个数组的原型函数。
另一个缺点是实际上无法中断
forEach循环。因此,它肯定不是 JavaScript 中最灵活的
for循环。哈哈,很高兴知道我不是唯一一个遇到这种情况的人。 Chris,我同意你的观点。 知道何时使用某些东西比记住所有语法并不知道何时使用哪种语法更有价值。
我们只有这么多的脑细胞,我们应该将其用于创新,而不是存储谷歌最擅长处理的东西。
我觉得我被“揭露”了
谢谢 Chris! 我会将此页面添加为书签,以便下次需要时使用!
你也不应该那样做。 使用
console.log代替。非常正确。 这类似于我建议人们学习新语言的方式:完全记住每种语法中需要使用的每个命令需要花费数年时间,但只要你知道一种语言的功能以及通用编程的基础,就不需要记住公式。 重要的是要知道使用什么以及如何找到它。
这就是我们有文档的原因 :)
我似乎总是忘记“case..when…otherwise”,尤其是在 Javascript 中。 我在 C#、XSLT 和 javascript 中使用它,但每次(即使现在)我都问我的朋友或谷歌 :-)
我经常访问古老的 w3schools.com,例如:Javascript Switch。
——哦,我从 1986 年就开始编程了(!)
不不不,你应该阅读这个:http://www.w3fools.com/
阅读像这样的内容总是让我感到欣慰。 我最近开始学习 JQuery 和纯 JS,有时当遇到问题并且记不住如何构建语法时,我会觉得我的学习出了问题。 很高兴读到即使在更高级别,有时你也会一片空白,需要使用一些外部资源。
哈,我遇到过类似的关于注释语法的难题…
我不是忘记了语法是什么,而是在文件之间切换时,我偶尔会意外地使用错误的语法。 当我只是添加一个注释,突然所有东西都坏了时,我总是会愣一下… :-)
Coffeescript
当你同时在几个不同的环境中工作时,情况会变得更加有趣;)
是的,Coffeescript 以某种方式被忽略了
这就是为什么拥有一个允许你突出显示一段文本并按下组合键将其注释掉的 IDE 是一个好主意。
不记得
for循环的语法根本不是问题。 问题是不了解如何/何时使用它。当我从 JS 切换到 PHP 或其他语言时,也会发生这种情况。 但奇怪的是,我总是记得如何在 Basic 中编写它!
我完全同意。 这不是关于谁能够记住正确的语法,而是关于谁知道每种情况下的正确工具/结构。
是的,这就像演奏不同的乐器。 如果你能写出好的音乐,那只是语法上的差异。 在同一类乐器(弦乐、铜管、木管、打击乐等)中更是如此。 好的帖子。
好奇地想知道为什么 Haml 和 CoffeeScript 循环了 16 次,而其他语言只循环了 5 次? ;)
我非常喜欢这篇文章。我也经常忘记一些零散的东西,但我仍然算是一个不错的开发者!我认为就像你说的那样,当你接触过太多语言时,这种情况偶尔会发生。听到一位我认为是真正的大神说出这种想法,真是令人耳目一新。我也非常喜欢你用所有这些语言展示的循环示例——可以做成一张很不错的海报!
为了循环的缘故,以下是AMPscript中的循环
%%[for @i = 1 to 3 do ]%%
[变量、字段和输出]
%%[next @i]%%
什么是“Haml”?
HAML是一种HTML模板解析引擎。换句话说,它是一个用于优化HTML编码的框架……
请在谷歌上搜索更多信息……
忘记确切的语法是我在编写代码时经常遇到的事情。
但我并不是每天都编写代码。有时我可能几个星期都不写任何代码,因为我要做其他事情(在Photoshop中设计,做SEO,为我的网站编写内容等等)。我相信Chris也处在类似的境地。
那些除了每天全天候编写代码之外几乎不做其他事情的人,不太可能忘记如何在他们经常使用的任何语言中编写for循环。
我意识到这与“精神”无关,但它可能对不熟悉JavaScript的人有所帮助;在你的JS循环中,你没有声明
i,所以它将在全局作用域中,这可能会导致代码中其他使用i的地方出现问题。它应该是这就是为什么我总是打开Dash,随时准备在工作时提供帮助!
如果你还不知道Dash,请访问:http://kapeli.com/dash
注意:我和Dash开发者没有任何关系,我只是觉得它是在这种情况下提供帮助的绝佳解决方案…… ;-)
你可能想添加这些
Python
Java
根据Ruby风格指南,Ruby中的示例被认为是不好的做法。
就我个人而言,我唯一能记住的
for循环是Ruby和Haml中的那些使用each的循环,因为它们看起来最接近自然语言。在其他语言中,我最不喜欢的是(i = 0; i < 5; i++),因为在99%的用法中,它们的可配置性都远超必要。大多数时候,我只是想遍历整个列表。没错!!
很多时候,我也会感到困惑,或者我应该说,忘记了!
嗯……Haml的for循环就是Ruby的for循环……
没错!
优秀的程序员不是那些能够完美记住语法的人。你可以在几秒钟内查找任何需要的语法或函数。重要的是要有创造力和思考能力。
我建议任何编写代码的人都使用像AutoHotkey这样的工具——一个很酷的文本自动扩展器。
例如:我输入“fori”,它会扩展成我最常用的PHP for循环。(哎呀,是的,它在我在这里输入时也自动扩展了哈哈 :))
我将所有脚本都设置在一个文本文件中,该文件位于Dropbox中,因此我在任何使用的电脑上都是一样的。
正如Chris提到的,有很多语言,所以可以选择设置:pfor、jfor、sfor……等等。
我相信我们正处于一个不需要记住拼写,也不需要记住某些东西的精确语法的时代——计算机在帮助我们: )
确认任何话题都可以讨论,即使像这样看似愚蠢的事情
这就是我在所有研讨会上说的话。现在有人支持我了。:P
我爱这个网站。不知何故,无论我是否需要,我最终都会来到这里。Chris的文章中没有任何自负或其他废话。这给了我作为一名Web开发者的信心,这些“简单”的事情,我偶尔也会忘记/有时也会遇到问题,它们确实存在于各种水平上。谢谢。
你能够多快地用谷歌搜索解决你的小代码问题也很重要。**这才是精神!**
在所有语言中,最容易记住的循环是ASP Classic循环
不错的文章,谢谢。
很棒的帖子,我是一个前端开发者,总是会花费大量时间微调不同语言的错误。我的循环写法有点像“西班牙英语”,总是接近原生语法,但带有一点来自JS或SCSS的味道。
有趣……这只是用多种语言编程时会发生的事情之一。我数不清有多少次因为我用一种语言打字,却想着另一种语言,而使用了错误的简单函数语法(比如这个)。哈哈!
for ($i = 1; $i < 5; $i++) {
echo $i;
}
偶尔我会出错,用逗号代替分号。这真的让我陷入循环(不是双关语)。
此网站包含几种流行编程语言的许多常见算法。你可以按算法或按语言查看。
http://langref.org/all-languages/program-structure/loops
我也记不住各种语法。但我的编辑器可以。vim允许我输入**fl**。就会弹出一个符合语言语法的for循环。**cl**用于类,**wl**用于while循环,等等。
我假设许多编辑器都可以做到这一点,或者可以通过适当的插件实现。
-sq
说得对。phpStorm也有这个功能,对Zen Coding很有帮助。可以根据文件类型指定简写代码。因此,“fl”可以多次使用,IDE会根据文件类型知道要生成哪个for循环。巧妙且有用的东西: )
阿门。
很高兴知道我不是唯一一个。