小编yba*_*kos的帖子

Rails助手应该假设存在实例变量,还是应该将它们作为参数接收?

我想知道是否有一个特定的编程原理(Demeter?)支持Rails助手永远不应该使用控制器实例变量的想法,相反,它们应该接收诸如函数参数之类的变量.例如,假设我的ChickensController#squawk操作创建了一个名为的实例变量@egg.此外,假设squawk视图包含对调用的调用程序的调用cockadoodledoo,如下所示实现:

def cockadoodledoo
  @egg.to_s
end
Run Code Online (Sandbox Code Playgroud)

@egg作为参数传递会更好还是不必要地冗长,这样视图调用cockadoodledoo(@egg)和帮助器类似:

def cockadoodledoo(egg)
  egg.to_s
end
Run Code Online (Sandbox Code Playgroud)

我希望你们中的一个快乐的黑客在星期五下午感到厌倦,以便给出答案.Cockadoodledoo!

这个问题类似,但从未准确回答过.

parameters ruby-on-rails function parameter-passing

40
推荐指数
4
解决办法
6983
查看次数

Dart:将地图转换为对象列表

做了几次谷歌搜索,没有任何有用的东西出现。在尝试做一些应该非常简单的事情时,我一直在打击一些错误。将诸如地图之类的地图转换为{2019-07-26 15:08:42.889861: 150, 2019-07-27 10:26:28.909330: 182}具有以下格式的对象列表:

class Weight {
  final DateTime date;
  final double weight;
  bool selected = false;

  Weight(this.date, this.weight);
}
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情: List<Weight> weightData = weights.map((key, value) => Weight(key, value));

toList()显然,没有地图的方法。到目前为止,我不喜欢 dart 中的地图。对象类型映射和映射函数之间的命名混乱。使互联网上的故障排除令人难以忍受。

dart flutter

38
推荐指数
6
解决办法
6万
查看次数

函数声明是否应包含参数名称?

您实际上会考虑更好的编码风格:在标题内声明函数/方法的参数名称,或仅在源文件中声明参数名称,因为可以同时执行这两种操作:如果您实际上只考虑在源文件中声明函数/方法的参数名称,那么您将如何声明默认值?

外标题:

//One.hpp
#ifndef ONE_HPP
#define ONE_HPP
namespace eins {

/** \brief description
 *  
 * \param one represents ....
 * \param two represents ....
 */
void function(int,int);

}
#endif

// One.cpp
#include "One.hpp"

eins::function(int one,int two) {
  //Do stuff//
}
Run Code Online (Sandbox Code Playgroud)

内部标题:

//One.hpp
#ifndef ONE_HPP
#define ONE_HPP
namespace eins {

/** \brief description
 *  
 * \param one represents ....
 * \param two represents ....
 */
void function(int one,int two);

}
#endif

// One.cpp
#include "One.hpp"

eins::function(int one,int two) {
  //Do stuff// …
Run Code Online (Sandbox Code Playgroud)

c++ coding-style

22
推荐指数
3
解决办法
1万
查看次数

为什么在分配给C++常量的值之后需要附加L或F?

我已经在网上查看了很多地方,似乎无法找到一个很好的解释,为什么我们应该在分配给C++常量的值之后附加F或L. 例如:

const long double MYCONSTANT = 3.0000000L;
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么这是必要的?类型声明是否意味着分配给MYCONSTANT的值是一个很长的双倍?上面的行与之间有什么区别?

const long double MYCONSTANT = 3.0000000;        // no 'L' appended
Run Code Online (Sandbox Code Playgroud)

呼!

c++ syntax types constants

15
推荐指数
2
解决办法
1万
查看次数

如何从iOS操场中的文件中实例化Storyboard?

假设您已将Xcode 6项目中的Main.storyboard复制到独立的playground的Resources目录中.如何UIStoryboard使用Main.storyboard文件实例化?尝试使用默认的via nil不起作用:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
Run Code Online (Sandbox Code Playgroud)

也没有明确使用主捆绑:

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
Run Code Online (Sandbox Code Playgroud)

即使操场是故事板的Xcode项目的一部分,我也会收到同样的错误:"无法在捆绑NSBundle中找到名为'main'的故事板......"

似乎捆绑路径是正确的,并且应该能够反序列化故事板文件.

storyboard swift swift-playground

13
推荐指数
1
解决办法
3082
查看次数

fork()如何为子进程返回

我知道fork()对子进程和父进程的返回方式不同,但我无法找到有关如何发生这种情况的信息.子进程如何从fork接收返回值0?有关调用堆栈的区别是什么?据我了解,对于父母来说,它是这样的:

parent进程 - 调用fork - > system_call - 调用fork - > fork执行 - 返回 - > system_call - 返回 - > parent进程.

儿童过程会发生什么?

linux fork

12
推荐指数
3
解决办法
3万
查看次数

为什么在C++中使用std :: string而不是c风格的字符串?

"一个人应该总是使用std :: string而不是c风格的字符串(char *)"这是几乎所有在这里发布的源代码的建议.虽然建议无疑是好的,但正在解决的实际问题不允许详细阐述原因?建议的方面详细.这个问题是作为占位符.

一个好的答案应该包括以下几个方面(详细):

  1. 为什么要std::string在C++中使用c风格的字符串?
  2. 提到的做法有哪些缺点(如果有的话)#1
  3. 在提到的建议的反面#1是一个好的做法的情况是什么?

c++ string c-strings

11
推荐指数
1
解决办法
6145
查看次数

我是否滥用"救援"进行零检查?

rescue用于所有事情,而不仅仅是用于"拯救"例外.我的意思是,我只是喜欢它让我验证并仔细检查数据的方式.

举个例子,假设我有一个Item可能有或没有的模型User.然后,当我想获得我写的项目的所有者名称时:

item.user.name rescue ""
Run Code Online (Sandbox Code Playgroud)

而不是像

item.user.nil? ? "" : item.user.name
Run Code Online (Sandbox Code Playgroud)

它也是同样的想法,因为nil.name触发了我拯救的异常"",但我不确定这是一个好习惯.它制作了我想要的东西,它用更少的代码制作它,但是......我不知道,rescue这里和那里的所有单词都让我感到不安全.

这是一种不好的做法,还是滥用rescue关键字有效?

ruby exception-handling ruby-on-rails

9
推荐指数
1
解决办法
987
查看次数

传递给Intent构造函数时,从事件处理程序传递此类与ClassName.this之间的区别是什么?

在早期的Android编程教程(第192页)中,我们看到了一个实现LunchList#onOptionsItemSelected.在这个实现中,我们看到两个Intent传递给startActivity:一个传递构造函数LunchList.this,另一个传递构造函数this.

有什么不同?

见这里的第78-91行.注意如何onOptionsItemSelected在内部类中声明.

在Android/Java中this,事件处理程序或通过反射进行功能绑定的上下文中是否有变化的价值?两个Intent实例都可以通过this吗?

java android event-handling commonsware

8
推荐指数
1
解决办法
2859
查看次数

getchar()和stdin

一个相关的问题在这里,但我的问题是不同的.

但是,我想更多地了解getchar()和stdin的内部结构.我知道getchar()最终只调用fgetc(stdin).

我的问题是缓冲,stdin和getchar()行为.鉴于经典的K&R示例:

#include <stdio.h>

main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,getchar()的行为可以描述如下:

如果stdin缓冲区中没有任何内容,请让OS接受用户输入,直到按下[enter].然后返回缓冲区中的第一个字符.

假设程序运行并且用户键入"凤尾鱼".

因此,在上面的代码清单中,第一次调用getchar()等待用户输入并将缓冲区中的第一个字符分配给变量c.在循环内部,第一次迭代对getchar()的调用说:"嘿,缓冲区中有东西,返回缓冲区中的下一个字符." 但是while循环的第N次迭代导致getchar()说"嘿,缓冲区中没有任何东西,所以让stdin收集用户键入的内容.

我花了一点时间使用c源代码,但似乎这更像是stdin而不是fgetc()的行为神器.

我错了吗?感谢您的见解.

c

7
推荐指数
3
解决办法
3万
查看次数