这基本上就是问题,是否有"正确"的实施方式operator<<?读这个我可以看到类似的东西:
friend bool operator<<(obj const& lhs, obj const& rhs);
Run Code Online (Sandbox Code Playgroud)
喜欢这样的东西
ostream& operator<<(obj const& rhs);
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么要使用其中一个.
我的个人案例是:
friend ostream & operator<<(ostream &os, const Paragraph& p) {
return os << p.to_str();
}
Run Code Online (Sandbox Code Playgroud)
但我可能会这样做:
ostream & operator<<(ostream &os) {
return os << paragraph;
}
Run Code Online (Sandbox Code Playgroud)
我应该根据这个决定做出什么理由?
注意:
Paragraph::to_str = (return paragraph)
Run Code Online (Sandbox Code Playgroud)
其中段落是一个字符串.
我想找出Python中方法的优点(它接收的参数数量).现在我这样做:
def arity(obj, method):
return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
class Foo:
def bar(self, bla):
pass
arity(Foo(), "bar") # => 1
Run Code Online (Sandbox Code Playgroud)
我希望能够做到这一点:
Foo().bar.arity() # => 1
Run Code Online (Sandbox Code Playgroud)
更新:现在上面的函数失败了内置类型,对此的任何帮助也将受到赞赏:
# Traceback (most recent call last):
# File "bla.py", line 10, in <module>
# print arity('foo', 'split') # =>
# File "bla.py", line 3, in arity
# return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
# AttributeError: 'method_descriptor' object has no attribute 'func_co
Run Code Online (Sandbox Code Playgroud) 假设我有以下结构:
app/
__init__.py
foo/
a.py
b.py
c.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
a.py,b.py和c.py共享一些常见的导入(logging,os,re等).是否可以从__init__.py文件中导入这三个或四个常用模块,这样我就不必在每个文件中导入它们了?
编辑:我的目标是避免在每个文件中导入5-6个模块,这与性能原因无关.
当我不得不处理异步应用程序时(特别是在处理必须通过JS获取所有数据的OpenSocial代码时),我发现自己在Javascript中编写了很多意大利面条.通常的模式是这样的:
请注意,此顺序执行路径(1 => 2 => 3 => 4)不适合异步.Ajax的本质因此用户最终等待很长时间并且代码变得一团糟,因为每一步都取决于之前的步骤.
代码示例:
gadgets.util.registerOnLoadHandler(setupUser())
...
function setupUser() {
var req = [get data and setup request]
req.send(some_url, some_data, function(response) { getFriendsFor(response.user) });
}
function getFriendsFor(user) {
var friends = [get friends from user]
var req = [setup request]
req.send(some_other_url, some_other_data, function(response { validateFriendsResponse(response.friends) });
}
function validateFriendsResponse(friends) {
if (friends.valid())
...
loadCanvas();
}
Run Code Online (Sandbox Code Playgroud)
您可以看到每个函数都依赖于前一个函数,更糟糕的是,必须按特定顺序调用它才有用.当你必须在用户等待时添加诸如显示/隐藏加载屏幕和其他噱头之类的东西时会变得更糟.
你会如何解决这个问题?
我想从命令行和我的个人编辑器开发和运行我的iPhone应用程序,而不必使用Xcode.
到目前为止,我已经能够编辑Emacs中的所有文件并运行
xcodebuild在项目中编译/链接/等.
下一步是创建一个Makefile任务,用我当前的应用程序启动iPhone模拟器.我怎么能这样做?
更新:我对XCode调用我的编辑器不感兴趣,我只是想尽可能地忘记IDE.
我想了解初始化模型嵌套字段的"正确"方法是什么.
假设您有一些模型的嵌套字段:
class User
has_one :address
accepts_nested_attributes_for :address
end
Run Code Online (Sandbox Code Playgroud)
并且您需要初始化这些属性(address在本例中)以在fields_for调用中使用它们.
到目前为止,我已经想到了三种方法.
首先,after_initialize挂钩模型:
class User
after_initialize :init_address
protected
def init_address
address ||= build_address
end
Run Code Online (Sandbox Code Playgroud)
然后我们在控制器中进行初始化:
class UsersController
def new
@user = User.new
@user.build_address
end
end
Run Code Online (Sandbox Code Playgroud)
最后,我们可以使用辅助方法为我们做到这一点:
module FormHelpers
def setup_user(user)
user.address ||= user.build_address
user
end
end
# view
<%= form_for setup_user(@user)... %>
Run Code Online (Sandbox Code Playgroud)
对于这种情况,是否有类似标准或"最佳实践"的内容?你是怎么做到的,为什么?
我在Rails应用程序中有以下模型:
class User
include Mongoid::Document
...
end
class Admin < User
...
end
Run Code Online (Sandbox Code Playgroud)
我得到一个用户:
u = User.find(some_key)
Run Code Online (Sandbox Code Playgroud)
并尝试更改_type:
u._type # => "User"
u._type = "Admin"
u.save
u._type # => "Admin"
Run Code Online (Sandbox Code Playgroud)
但是,如果我重新加载对象,它仍然是一个用户:
u.reload
u._type = "User"
Run Code Online (Sandbox Code Playgroud)
改变这个的正确方法是什么?
我public/files通过Web界面不断地将文件上传到我的Rails应用程序文件夹中.
我不希望将它们保存在源代码控制中,因为它们几乎占用了2 GB,所以每次执行cap deploy此操作都会将这些文件保存起来releases/并用存储在存储库中的原始副本替换目录.
我想知道在current目录中将这些文件保存在服务器中的最佳方法是什么.我的一些想法是:
有没有标准的方法来做到这一点?
我想知道人们使用什么来正确地将英文字符串大写,因为''大写''不能完成这项工作:
(capitalize "can't")
=> "Can'T"
Run Code Online (Sandbox Code Playgroud)
虽然写这个函数是微不足道的,但我想知道是否有一个首选的内置方法来实现它.
一些在线网站喜欢通过 HTML 实体对其所有文本进行编码,因此不会看到类似的文本
So I'm looking
Run Code Online (Sandbox Code Playgroud)
你会得到类似的东西:
So I'm looking 
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种内置方法可以使用任何 Emacs 内置函数将编码文本转换为常规文本,或者我是否应该声明我的字符串映射 ("&83" => "S"...) 并使用手动解码它一张地图。
任何指示将不胜感激。