...或者,如何通过它们实现的接口过滤一系列类?
假设我有一系列从Foo继承的对象,a seq<#Foo>.换句话说,我的序列将包含Foo的四个不同子类中的一个或多个.
每个子类实现一个不同的独立接口,它与其他子类实现的接口不共享.
现在我需要将此序列过滤为仅实现特定接口的项目.
C#版本很简单:
void MergeFoosIntoList<T>(IEnumerable<Foo> allFoos, IList<T> dest)
where T : class
{
foreach (var foo in allFoos)
{
var castFoo = foo as T;
if (castFoo != null)
{
dest.Add(castFoo);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用F#中的LINQ:
let mergeFoosIntoList (foos:seq<#Foo>) (dest:IList<'a>) =
System.Linq.Enumerable.OfType<'a>(foos)
|> Seq.iter dest.Add
Run Code Online (Sandbox Code Playgroud)
但是,我觉得应该有一种更惯用的方法来实现它.我以为这会起作用......
let mergeFoosIntoList (foos:seq<#Foo>) (dest:IList<'a>) =
foos
|> Seq.choose (function | :? 'a as x -> Some(x) | _ -> None)
|> Seq.iter dest.Add
Run Code Online (Sandbox Code Playgroud)
然而,编纂者抱怨:? 'a- 告诉我:
从类型'b到'a的这种运行时强制或类型测试涉及基于该程序点之前的信息的不确定类型.某些类型不允许运行时类型测试.需要进一步的类型注释.
我无法弄清楚要添加的更多类型注释.还有的接口之间没有任何关系'a …
来自INFORMATION_SCHEMA的"TABLES"表的CREATE_TIME列显示了我所有InnoDB表的相同CREATE_TIME.这意味着所有这些表都是在2010-03-26 06:52:00和2010-03-26 06:53:00之间创建的,而实际上它们是在几个月前创建的.
对于InnoDB表,CREATE_TABLE字段是否自动更改?
任何人都可以分辨出willRotateToInterfaceOrientation,willAnimateRotationToInterfaceOrientation,didRotateFromInterfaceOrientation之间的差异,
我观看了视频,我知道了一般原则 - 即使没有人订阅也会发生热情,冷却发生在"按需".此外,Publish()将冷转换为热,Defer()将冷转换为冷.
但是,我觉得我错过了细节.以下是我想回答的一些问题:
我有一个非常简单的PHP会话测试页面.
<?php
session_start();
if (isset($_SESSIONS['views']))
{
$_SESSIONS['views'] = $_SESSIONS['pv'] + 1;
}
else
{
$_SESSIONS['views'] = 0;
}
var_dump($_SESSIONS);
?>
Run Code Online (Sandbox Code Playgroud)
刷新页面后,它始终显示
array
'views' => int 0
Run Code Online (Sandbox Code Playgroud)
环境是XAMPP 1.7.3.我检查了phpInfo().会话已启用.
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
Run Code Online (Sandbox Code Playgroud)
访问该页面时,在我的"D:\ xampp\tmp"文件夹中创建了会话文件sess_lnrk7ttpai8187v9q6iok74p20.但内容是空的.
使用Firebug,我可以看到关于会话的cookie.
Cookie PHPSESSID=lnrk7ttpai8187v9q6iok74p20
Run Code Online (Sandbox Code Playgroud)
似乎会话数据没有刷新到文件.
是否有任何方法或方向来解决此问题?
谢谢.
Java varargs实现中似乎存在一个错误.当方法使用不同类型的vararg参数重载时,Java无法区分适当的类型.
它给了我一个错误 The method ... is ambiguous for the type ...
请考虑以下代码:
public class Test
{
public static void main(String[] args) throws Throwable
{
doit(new int[]{1, 2}); // <- no problem
doit(new double[]{1.2, 2.2}); // <- no problem
doit(1.2f, 2.2f); // <- no problem
doit(1.2d, 2.2d); // <- no problem
doit(1, 2); // <- The method doit(double[]) is ambiguous for the type Test
}
public static void doit(double... ds)
{
System.out.println("doubles");
}
public static void doit(int... is)
{
System.out.println("ints"); …Run Code Online (Sandbox Code Playgroud) 我希望使用Windows Azure和SQL Azure构建一个新网站.有没有人知道我可以用作Web角色的任何商业或免费CMS系统,它们将连接并使用SQL Azure作为存储?
在运行时从网站添加/删除HttpModules和HttpHandler是个好主意吗?我正在寻找使我的网站尽可能动态的方法,而无需再次上传更改的内容.像配置文件的东西.存在规则引擎,但学习它们似乎很痛苦.从我的角度来看,我可能是错的.请建议在运行时更改代码中逻辑的可能方法.
iphone ×2
objective-c ×2
asp.net-3.5 ×1
azure ×1
cocoa ×1
f# ×1
java ×1
macos ×1
mysql ×1
overloading ×1
php ×1
session ×1