当为List属性(在C#中)实现setter时,编写它是一件坏事:
private List<string> _TheList = new List<string>();
public List<string> TheList
{
get { return _TheList; }
set { _TheList = value; }
}
Run Code Online (Sandbox Code Playgroud)
它不应该写成:
private List<string> _TheList = new List<string>();
public List<string> TheList
{
get { return _TheList; }
set { _TheList = new List<string>(value); }
}
Run Code Online (Sandbox Code Playgroud)
直到今天我通常使用前者,但我最近发现一些使用后者的代码,似乎这可能是实现它的正确方法.
当对分配给它的外部列表进行更改时,不使用前者会导致更改TheList属性.例如:
List<string> list = new List<string>();
list.Add("Hello");
var c = new someClass();
c.TheList = list;
Run Code Online (Sandbox Code Playgroud)
使用前者不会使用以下代码打破TheList的封装:
list.Clear();
Run Code Online (Sandbox Code Playgroud)
现在c.TheList也是空的,这可能不是我们想要的.但是,使用后一种方法,c .List不会被清除.
我想在我的一个 Scala 应用程序中实现某种消息总线。其特点是:
我计划做的是将所有节点和总线本身实现为标准 Scala actor。例如我想定义Subscriber这样的特征:
trait Subscriber[M <: Message[_]] {
this: Actor =>
def notify(message: M)
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,混合此特征应该已经注册了该类型的订阅M。
那么这个想法有道理吗?有没有更好的方法来实现消息总线?
我有一些麻烦从S4类定义中识别出来自旧包的类.我继续得到错误
Error in makePrototypeFromClassDef(properties, ClassDef, immediate, where) :
in making the prototype for class "Tsvmm" elements of the prototype failed to
match the corresponding slot class: dates (class "dates" )
In addition: Warning message:
undefined slot classes in definition of "Tsvmm": dates(class "dates")
Run Code Online (Sandbox Code Playgroud)
一个可重复的例子:
require(chron)
setClass(
Class="Tsvmm",
representation=representation(
data = "data.frame",
dates = "dates"
),
prototype=prototype(
data = data.frame(),
dates = chron(0)
)
)
Run Code Online (Sandbox Code Playgroud)
尝试时class(chron(0)),答案是"dates" "times".使用is.numeric(chron(0)),答案是TRUE.然而,当我将插槽日期类设置为时"numeric",我得到相同的错误而没有警告消息.
我觉得我忽略了一些明显的东西,但我还没有在文档中找到它.有人指点吗?
PS:我知道chron包装至少是特殊的,但我有充分的理由使用它.另外,其他包可能会出现问题.将此视为一般问题的示例.所以,请不要告诉我使用Date或POSIXt类.那是我现在正在使用的黑客.
我有一个可以创建会话的控制器会话.我想从控制台调用它,比如controller.create.这是行动:
def create
#raise request.env["omniauth.auth"].to_yaml
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
user.create_or_update_profile(auth)
session[:user_id] = user.id
if user.needs_to_create_profile?
redirect_to new_profile_path, :notice => "Signed in!. We just need your contact e-mail"
else
redirect_to root_url, :notice => "Signed in!"
end
end
Run Code Online (Sandbox Code Playgroud) 我目前有一个视图设置如下:
@interface BlogViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
UITableView *mainTableView;
}
@property (nonatomic, retain) UITableView *mainTableView;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它内部有一个UITableView,我将所有数据加载到.但是,当我调用以下函数时:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
SingleBlogViewController *viewController = [[SingleBlogViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
//[self presentModalViewController:viewController animated:YES];
[viewController release];
}
Run Code Online (Sandbox Code Playgroud)
什么都没发生.出于某种原因,我的UITableView内心UIViewController并没有推动观点.这是因为它不是UITableViewController吗?我尝试将其更改为,但仍然无法正常工作.
我在这里错过了什么吗?
uitableview uinavigationcontroller pushviewcontroller ios4 ios
鉴于这种情况:
object ResourceManager {
private var inited = false
def init(config: Config) {
if (inited)
throw new IllegalStateException
// do initialization
inited = true
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我以inited某种方式"私有init()",这样我可以确定这个类中没有其他方法能够设置inited = false?
我正在尝试在模板函数中使用默认参数.以下是我正在尝试做的事情的最小例子:
template <typename T0, typename T1>
void sort(Vector<T0> &v0,Vector<T1> &v1=0)
{
//sort v0, if (v1 != 0) sort it according to v0
}
Run Code Online (Sandbox Code Playgroud)
#include "sort.h"
Vector<int> v0;
sort(v0);
Run Code Online (Sandbox Code Playgroud)
这不编译; 编译器给出错误"没有匹配函数来调用'sort'".
基本上这个函数应该对向量v0(任意数据类型)进行排序.另外,可以给出以与向量v0相同的方式排序的第二向量v1(任意)作为参数.当然,我可以简单地通过使用重载函数来解决这个问题,但由于我想将其他向量的列表扩展到5,我需要数百种不同的函数.
更新:感谢您的回复.我修改了我的问题描述,让你更好地了解我正在尝试做什么.
我对.htaccess文件不太熟悉,而且我正在尝试排除一个子域(类似于dev.example.com)以下重写规则已经存在:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Run Code Online (Sandbox Code Playgroud)
此规则禁止任何人只是输入example.com或http://example.com强制所需的URL显示,http://www.example.com.
我尝试了一些从这个重写规则中排除子域名的选项,但无济于事.该站点上的每个目录都有自己的.htaccess文件,但似乎这个目录仍然优先.有任何想法吗?谢谢!
我对这些问题有类似的问题:
NHibernate 2.*映射文件:如何定义可空的DateTime类型(DateTime?)?
NHibernate不会持久化DateTime SqlDateTime溢出
我正在使用NHibernate 2.1.2和FluentNhibernate 1.0.0.636.使用NHibernate 2.x DateTime?可以修复可以为空的问题,我不应该对我的映射做任何特别的事情.因此,我的所有DateTime属性都设置如下:
public virtual DateTime? CreatedOn { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我的数据库(SQL2008)中,所有DateTime属性都设置为允许null.我有我的NHibernate配置文件设置使用SQL2008方言:
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
Run Code Online (Sandbox Code Playgroud)
NHibernate适用于任何不包含DateTime的东西.作为参考,这是我收到的确切错误:
> at
> NHibernate.AdoNet.SqlClientSqlCommandSet.ExecuteNonQuery()</StackTrace><ExceptionString>System.Data.SqlTypes.SqlTypeException:
> SqlDateTime overflow. Must be between
> 1/1/1753 12:00:00 AM and 12/31/9999
> 11:59:59 PM.
Run Code Online (Sandbox Code Playgroud)
如果我运行SQL事件探查器,我可以看到NHibernate尝试执行的最后一个命令(这是一个非常长的语句,所以我截断了它):
exec sp_executesql N'UPDATE Projects SET Job = @p0, CreatedOn = @p1, .. WHERE (Where Clause), @p0=219221, @p1=NULL
Run Code Online (Sandbox Code Playgroud)
如果我将此语句作为查询执行,SQL会保持正常,不会抱怨!
这是怎么回事?
scala ×2
.htaccess ×1
actor ×1
bus ×1
c# ×1
c++ ×1
class ×1
controller ×1
default ×1
definition ×1
hash ×1
hashtable ×1
ios ×1
ios4 ×1
list ×1
message ×1
mod-rewrite ×1
nhibernate ×1
parameters ×1
perl ×1
php ×1
private ×1
r ×1
s4 ×1
templates ×1
uitableview ×1