HTML代码
<div id="foo">
<h1>foo</h1>
<p>Pellentesque habitant morbi tristique.</p>
</div>
<div id="bar">
<h1>bar</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
jQuery代码
$('#bar').click(function () {
$('#foo p').hide('slow').appendTo('#bar').show('slow');
})
Run Code Online (Sandbox Code Playgroud)
预期结果
单击#bar时
p元素#foop到#barp哪个现在是孩子的#bar实际结果
p到#barp元素#foop哪个现在是孩子的#bar问题
我想创建一个特性,为类添加一些属性,并使链式方法成为可能.在Scala 2.8.1中测试过.
trait SomeProperty {
var prop : String = "default"
def setProp(s: String) = {
prop = s
this
}
}
sealed abstract class Value
case class IntegerValue(v: Int) extends Value
case class FloatValue(v: Float) extends Value with SomeProperty {
def foo() = { println("I'm foo.") }
}
case object UnknownValue extends Value with SomeProperty {
def bar() = { println("I'm bar.") }
}
scala> val x = UnknownValue
scala> x.setProp("test").bar()
<console>:10: error: value bar is not a member …Run Code Online (Sandbox Code Playgroud) 我有一个对象:
var mubsisapi = {
step1 : function(){alert("a")},
step2 : function(){alert("b")}
}
$.extend(false, mubsisapi)
mubsisapi.step1().step2();
Run Code Online (Sandbox Code Playgroud)
这是给予step1()但不给予step2().step2()没有发出警报.我怎样才能做到这一点?
是否可以在R中链接函数?
样本数据:
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
Run Code Online (Sandbox Code Playgroud)
例如,我想替换以下语句:
step1 <- mean(m)
step2 <- sum(step1)
res <- step2
Run Code Online (Sandbox Code Playgroud)
要么,
res <- sum(mean(m))
Run Code Online (Sandbox Code Playgroud)
有这样的事情:
res <- m@mean()@sum()
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这将大大澄清我的代码.
EDIT1这是一个虚拟的例子.我随机选择了'sum'和'mean'.
Ben使用%@%给出了第一个答案,但它阻止在函数中使用额外的参数:
m %@% function1(arg1, arg2) %@% function2(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
EDIT2添加一个例子
require(xts)
require(PerformanceAnalytics)
xts.ts <- xts(rnorm(231),as.Date(13514:13744,origin="1970-01-01"))
plot(na.omit(lag( rollapply(xts.ts, width=rolling.per-1, FUN= function(x){sqrt(var(x))*sqrt(252)}), k=1)), main = "Dummy Example")
Run Code Online (Sandbox Code Playgroud)
这个例子似乎适用于Charles解决方案:
`%@%` <- function(x, f) eval.parent(as.call(append(as.list(substitute(f)), list(x), 1)))
xts.ts %@% rollapply( width = rolling.per-1, FUN= function(x) x%@%var%@%sqrt * sqrt(252) ) %@% lag( k=1) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为以下两种方法执行链接方法.运行此代码后,我不断获得以下输出:
#<SimpleMath:0x007fc85898ab70>%
Run Code Online (Sandbox Code Playgroud)
我的问题是:链接方法的正确方法是Ruby什么?
这是我的代码:
class SimpleMath
def add(a,b=0)
a + b
return self
end
def subtract(a,b=0)
a - b
return self
end
end
newNumber = SimpleMath.new()
print newNumber.add(2,3).add(2)
Run Code Online (Sandbox Code Playgroud) 我正在使用IntelliJ IDEA 13.1.5编写使用流畅API的Java代码,我注意到当我关闭一个"流畅"代码部分的块时,IDEA会自动将"流畅"代码扁平化为一行.
例如,如果我有这个方法:
public int sendMessage(Message message) {
Response response = JerseyClientHelper.target(serverUrl)
.header("User-Agent", userAgent)
.post(Entity.entity(message));
return response.getStatus();
}
Run Code Online (Sandbox Code Playgroud)
我尝试将其包装在一个新的'if'块中,然后我将输入if条件并打开块:
public int sendMessage(Message message) {
if (message != null) {
Response response = JerseyClientHelper.target(serverUrl)
.header("User-Agent", userAgent)
.post(Entity.entity(message));
return response.getStatus();
// Didn't type the '}' to close the block yet
}
Run Code Online (Sandbox Code Playgroud)
但是只要我键入}以关闭块,IntelliJ就会将代码展平为一行:
public int sendMessage(Message message) {
if (message != null) {
Response response = JerseyClientHelper.target(serverUrl).header("User-Agent", userAgent).post(Entity.entity(message));
return response.getStatus();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法禁用流畅的API自动展平?我查看了"代码样式 - > Java"和"代码样式 - >常规"部分,但找不到任何与此特别相关的内容.
嗨,我遇到了问题.
我想实现构建器模式以使创建对象更容易.我面临的问题与嵌套对象有关.我想要创建的对象中有一个其他对象的列表,我真的不知道如何解决它.
我希望能够执行以下操作(例如,更简单的对象):
Receipt RestaurantReceipt = new ReceiptBuilder()
.withDate("value")
.withName("value")
.AddItem("value")
.WithIngredients("value")
.WithType("value")
.AddItem("value")
.WithIngredients("value")
.WithType("value")
.build();
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
Receipt RestaurantReceipt = new ReceiptBuilder()
.withDate("value")
.withName("value")
.AddItem("value", item => {
.WithIngredients("value")
.WithType("value")
})
.AddItem("value", item => {
.WithIngredients("value")
.WithType("value")
})
.build();
Run Code Online (Sandbox Code Playgroud)
示例应该代表我的情况,尽管如果有多种类型的嵌套对象.
在阅读完这个问题之后,我开始考虑Java 8中的泛型方法.具体来说,当链接方法时,泛型类型参数会发生什么.
对于这个问题,我将使用Guava的一些通用方法ImmutableMap,但我的问题更为通用,可以应用于所有链式泛型方法.
考虑ImmutableMap.of具有此签名的泛型方法:
public static <K, V> ImmutableMap<K, V> of(K k1, V v1)
Run Code Online (Sandbox Code Playgroud)
如果我们使用这个泛型方法声明a Map,编译器会正确推断泛型类型:
Map<String, String> map = ImmutableMap.of("a", "b");
Run Code Online (Sandbox Code Playgroud)
我知道从Java 8开始,编译器推理机制已得到改进,即它从上下文中推断出通用类型的方法,在本例中是一个赋值.
上下文也可以是方法调用:
void someMethod(Map<String, String> map) {
// do something with map
}
someMethod(ImmutableMap.of("a", "b"));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,泛型类型ImmutableMap.of是从参数的泛型类型推断出来的someMethod,即.Map<String, String> map.
但是当我尝试使用ImmutableMap.builder()和链接方法来构建我的地图时,我得到一个编译错误:
Map<String, String> map = ImmutableMap.builder()
.put("a", "b")
.build(); // error here: does not compile
Run Code Online (Sandbox Code Playgroud)
错误是:
Error:(...) java: incompatible types:
ImmutableMap<Object, Object> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个必须像这样调用的脚本:
$father = Father::firstName('Esaaro')->lastName('Ozaaraa')->age(42);
Person::firstName("Soobaasaa")->lastName( "Ozaaraa")->age(17)
->setFather( $father )-> toArray();
Run Code Online (Sandbox Code Playgroud)
所以我们有两个名为Person和的类Father.
firstName两个类的static方法是方法和其他方法public.
这是我的文件结构
<?php
class Person
{
protected static $name;
protected $lastName, $age, $father, $result;
public static function firstName($name = null)
{
self::$name = $name;
}
public function lastName($lastName = null)
{
$this->lastName = $lastName;
}
public function age($age = null)
{
$this->age = $age;
}
public function toArray()
{
}
public function setFather(Father $father)
{
}
}
/* …Run Code Online (Sandbox Code Playgroud) 见下面的代码:
new ConditionCreator()
.Add()
.Or()
.Add()
.And()
.Add()
Run Code Online (Sandbox Code Playgroud)
我想为此创建一个Fluent接口但是我需要,在Add()方法开发人员看到Only Or()或And()之后,在其中一个之后,请参阅Only Add()方法.
所以没有人可以编写如下代码:
new ConditionCreator()
.Add()
.Add()
.Add()
.Or()
.And()
.Add()
.And()
.And()
Run Code Online (Sandbox Code Playgroud)
我希望有一些限制,一些方法可以接受特殊的方法等.我可以在一个类中编写所有方法,并为每一个返回这个,但这是不合适的!
请指导我如何编写Advanced Fluent Interface类.
method-chaining ×10
c# ×2
java ×2
javascript ×2
jquery ×2
methods ×2
fluent ×1
formatting ×1
generics ×1
indentation ×1
java-8 ×1
php ×1
r ×1
ruby ×1
scala ×1
traits ×1