有时我将布尔检查提取到局部变量中以实现更好的可读性.
你怎么看?
有什么缺点?
如果变量没有在其他地方使用,编译器是否为线路输入?我还想过用一个额外的块"{}"来缩小范围.
if (person.getAge() > MINIMUM_AGE && person.getTall() > MAXIMUM_SIZE && person.getWeight < MAXIMUM_WEIGHT) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
final boolean isOldEnough = person.getAge() > MINIMUM_AGE;
final boolean isTallEnough = person.getTall() > MAXIMUM_SIZE;
final boolean isNotToHeavy = person.getWeight < MAXIMUM_WEIGHT;
if (isOldEnough && isTallEnough && isNotToHeavy) {
// do something
}
Run Code Online (Sandbox Code Playgroud) 有些人可以通过以下规则给我正确的密码表达.
密码长度至少应为7个字符.它应包含最少3位数字和一个字母字符.密码可以接受任意次数的数字,字母,特殊字符,但数字应至少为3.
我写了一个Windows服务和一个gui.当然gui主要取决于服务.gui有没有办法等待服务?有时我需要从gui重新加载服务配置并重新启动服务.
我正在考虑2个解决方案:1.使用while和sleep等待服务控制器状态改变(当然最简单的解决方案:P)2.在某处实现INotifiPropertyChanged接口(这对于这个琐碎的问题看起来很复杂).
我想知道有更优雅的方式吗?有什么事我在某个地方失踪吗?
让我们以Wes Dyer的函数memoization方法为出发点:
public static Func<A, R> Memoize<A, R>(this Func<A, R> f)
{
var map = new Dictionary<A, R>();
return a =>
{
R value;
if (map.TryGetValue(a, out value))
return value;
value = f(a);
map.Add(a, value);
return value;
};
}
Run Code Online (Sandbox Code Playgroud)
问题是,当从多个线程使用它时,我们可能会遇到麻烦:
Func<int, int> f = ...
var f1 = f.Memoize();
...
in thread 1:
var y1 = f1(1);
in thread 2:
var y2 = f1(1);
// We may be recalculating f(1) here!
Run Code Online (Sandbox Code Playgroud)
我们试着避免这种情况.锁定map:
public static Func<A, R> …Run Code Online (Sandbox Code Playgroud) 如果用户通过facebook连接登录我的网站,如何通过javascript确定?根据这个结果,我想<fb:login-button>
在网站上显示/不显示按钮.
如果我使用jquery做了类似的事情:
<div id="login"></div>
<script>
if (notLoggedIn)
{
$("#login").html("<fb:login-button></fb>");
}
</script>
Run Code Online (Sandbox Code Playgroud)
它会起作用吗?
我正在寻找一个特定的数据结构,但我忘了它的名字.如果我知道它的名字将是微不足道的,我会在维基百科中查找:)
基本上,它就像一个集合 - 除了你不能迭代它.
你把一些值放进去,比方说80k邮政编码.
然后你可以测试一个给定的字符串肯定不是一个邮政编码,但如果插入太多的邮政编码,你最终会得到误报.
这种结构的内存消耗很小.
它的名字是什么,在java中有实现吗?
我在网上搜索了Haskell中n-queens问题的不同解决方案,但找不到任何可以在O(1)时间内检查不安全位置的解决方案,就像你为/对角线保留一个数组而另一个用于\ diagonals.
我找到的大多数解决方案只是检查了所有以前的新女王.像这样的东西:http: //www.reddit.com/r/programming/comments/62j4m/nqueens_in_haskell/
nqueens :: Int -> [[(Int,Int)]]
nqueens n = foldr qu [[]] [1..n]
where qu k qss = [ ((j,k):qs) | qs <- qss, j <- [1..n], all (safe (j,k)) qs ]
safe (j,k) (l,m) = j /= l && k /= m && abs (j-l) /= abs (k-m)
Run Code Online (Sandbox Code Playgroud)
在Haskell中实现这种"O(1)方法"的最佳方法是什么?我不是在寻找任何"超级优化"的东西.只是某种方式来产生"这个对角线已经被使用了吗?" 数组以功能的方式.
更新:
感谢所有答案,伙计们!我最初问这个问题的原因是因为我想解决一个更难回溯的问题.我知道如何用命令式语言解决它,但不能轻易想到一个纯粹的功能数据结构来完成这项工作.我盘算了一下,皇后问题将是一个很好的模式(即在对整个数据结构问题回溯问题:)),但它不是我的真正的,虽然问题.
我实际上想找到一个允许O(1)随机访问的数据结构,并保持处于"初始"状态(自由线/对角线,在n-queens情况下)或处于"最终"状态(被占用)的值线/对角线),转换(自由占用)为O(1).这可以使用命令式语言中的可变数组来实现,但我觉得更新值的限制只允许一个很好的纯函数数据结构(例如,与Quicksort相反,它真的需要可变数组).
我认为,在Haskell中使用不可变数组可以获得同样好的解决方案,而"main"函数看起来就像我想要的那样:
-- try all positions for a queen in row n-1
place :: BoardState -> …Run Code Online (Sandbox Code Playgroud) algorithm haskell functional-programming backtracking data-structures
在PHP文件中,当我需要重定向用户并且已经发送了标题时,我不能使用php的标题函数,在这种情况下哪个是重定向用户的最佳方法?
无论用户浏览器品牌如何,最快,最可靠的方法?
echo '<script type="text/javascript">window.top.location="http://localhost/";</script>';
// OR
echo '<meta http-equiv="refresh" content="0;url=' .$location. '">';
Run Code Online (Sandbox Code Playgroud)
UPDATE
这是我现在使用的最终结果代码,如果标题已经发送到我无法重定向到主页,我只是将主页带给我,所以不包括正文页面,它将包括我的主页和页脚
function validlogin($url) {
if (!isset($_SESSION['auto_id']) || ($_SESSION['auto_id']=='')) {
$_SESSION['sess_login_msg'] = 'Please login';
$_SESSION['backurl'] = $url;
$temp = '';
if (headers_sent() === false){
header("Location: /");
exit();
}else{
//header is already sent so we will just bring the homepage to us instead of going to it!!!
include 'mainbody.inc.php';
include 'footer.inc.php';
exit();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个将字符串参数解析为枚举的方法.枚举的类型也由参数决定.这是我开始的:
public static type GetValueOrEmpty(string text, Type type)
{
if (!String.IsNullOrEmpty(text))
{
return (type)Enum.Parse(typeof(type)value);
}
else
{
// Do something else
}
}
Run Code Online (Sandbox Code Playgroud)
显然,由于多种原因,这不起作用.有没有办法可以做到这一点?
c# ×3
algorithm ×2
.net ×1
android ×1
asp.net ×1
backtracking ×1
bloom-filter ×1
facebook ×1
haskell ×1
header ×1
java ×1
javascript ×1
jquery ×1
locking ×1
memoization ×1
php ×1
redirect ×1
regex ×1
types ×1
webview ×1