假设我有一个Java IntStream,是否可以将其转换为具有累积总和的IntStream?例如,以[4,2,6,...]开头的流应转换为[4,6,12,...].
更一般地说,应该如何实现有状态流操作?感觉这应该是可能的:
myIntStream.map(new Function<Integer, Integer> {
int sum = 0;
Integer apply(Integer value){
return sum += value;
}
);
Run Code Online (Sandbox Code Playgroud)
有明显的限制,这只适用于顺序流.但是,Stream.map明确需要无状态映射函数.我是否正确错过了Stream.statefulMap或Stream.cumulative操作,还是缺少Java流的重点?
比较一下Haskell,其中scanl1函数正好解决了这个例子:
scanl1 (+) [1 2 3 4] = [1 3 6 10]
Run Code Online (Sandbox Code Playgroud) 我想定义一个泛型类型ExcludeCart<T>,它基本上是T用给定键(在我的情况下cart)删除的.所以,例如,ExcludeCart<{foo: number, bar: string, cart: number}>将是{foo: number, bar: string}.有没有办法在TypeScript中执行此操作?
这就是我想要这样做的原因,以防我咆哮错误的树:我正在将现有的JavaScript代码库转换为TypeScript,它包含一个名为的装饰器函数cartify,它接受一个React组件类Inner并返回另一个组件类Wrapper.
Inner应该采取cart道具,以及零或多个其他道具.Wrapper接受一个cartClient道具(用于生成cart要传递到的道具Inner)和任何Inner接受的道具,除了 cart.
换句话说,一旦我弄清楚如何定义ExcludeCart,我想用它来做:
function cartify<P extends {cart: any}>(Inner: ComponentClass<P>) : ComponentClass<ExcludeCart<P> & {cartClient: any}>
Run Code Online (Sandbox Code Playgroud) generics decorator typescript reactjs higher-order-components
有谁知道如何char使用Java的XMLStreamWriter 正确输出扩展字符(非BMP,超过1 )?例如,尝试输出Unicode U + 10480 :
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
public class XmlStreamWriterExtendedCharactersFail {
public static void main(String[] args) throws XMLStreamException {
String inlineStr = "inlineStr = ";
// create string using StringBuilder to avoid Java file encoding confusion:
String sbStr = new StringBuilder("sbStr = ").appendCodePoint(0x10480).toString();
assert sbStr.equals(inlineStr);
System.out.println(sbStr);
OutputStreamWriter outWriter = new OutputStreamWriter(System.out,
StandardCharsets.UTF_8.newEncoder());
XMLStreamWriter writer = XMLOutputFactory.newFactory()
.createXMLStreamWriter(outWriter);
writer.writeStartDocument("UTF-8", "1.1");
writer.writeStartElement("el");
writer.writeCharacters(sbStr);
writer.writeEndElement();
writer.writeEndDocument();
writer.close();
}
}
Run Code Online (Sandbox Code Playgroud)
results in: …
我需要将DateTime类型转换为Date.这是我的代码:
DateTime dt = DateTime(2015, 1, 1, 14, 10, 13);
Date z = cast(Date)dt;
Run Code Online (Sandbox Code Playgroud)
Error: cannot cast from DateTime to Date
怎么了?
想象一下,Scanner传递任何字符串输入,如"11 22 ab 22",该方法应该计算所有数字的总和(55为提到的例子).我在这里编写了一些内容,但我无法跳过字符串.有人可以帮我吗?
System.out.println("Please enter any words and/or numbers: ");
String kbdInput = kbd.nextLine();
Scanner input = new Scanner(kbdInput);
addNumbers(input);
public static void addNumbers(Scanner input) {
double sum = 0;
while (input.hasNextDouble()) {
double nextNumber = input.nextDouble();
sum += nextNumber;
}
System.out.println("The total sum of the numbers from the file is " + sum);
}
Run Code Online (Sandbox Code Playgroud) java ×3
casting ×1
d ×1
datetime ×1
decorator ×1
generics ×1
java-8 ×1
java-stream ×1
reactjs ×1
stax ×1
typescript ×1
unicode ×1
while-loop ×1
xml ×1