我有一个简单的控制台应用程序,我已经Console.WriteLine
在很多地方用来向用户显示正在执行的活动.但是,最后我想将所有控制台输出保存到日志文件中.目前,我有这样的事情:
if (!Directory.Exists(LOG_DIRECTORY)) {
Directory.CreateDirectory(LOG_DIRECTORY);
}
long ticks = DateTime.Now.Ticks;
string logFilename = ticks.ToString() + ".txt";
string filePath = Directory.GetCurrentDirectory() + "\\" + LOG_DIRECTORY + "\\" + logFilename;
FileStream ostream = null;
StreamWriter writer = null;
TextWriter oldOut = Console.Out;
try
{
ostream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
writer = new StreamWriter(ostream);
}
catch (Exception ex)
{
Console.WriteLine("Cannot open {0} for writing.", logFilename);
Console.WriteLine(ex.Message);
return;
}
Console.SetOut(writer);
Console.WriteLine("{0}", Directory.GetCurrentDirectory());
Console.SetOut(oldOut);
writer.Close();
ostream.Close();
Console.WriteLine("\n\nDone!");
Run Code Online (Sandbox Code Playgroud)
关键是这会将内容直接打印到文件中,并且控制台中不会打印任何内容.有没有办法解决这个问题?请注意,我需要将Console.WriteLine
输出直接实时写入控制台,而对于写入日志文件,可以在程序结束时完成,其中几乎所有其他内容都已完成.
我在一个项目中使用 Material UI 和 React,我有一个组件,大致如下所示:
import React, { Component } from 'react';
import { List, ListItem } from 'material-ui';
import PropTypes from 'prop-types';
class MyComp extends Component {
constructor(props) {
super(props);
this.onClickMethod = this.onClickMethod.bind(this);
}
onClickMethod() {
// removed for brevity
}
render() {
return (
<div>
<List>
{this.props.myData.map(pp => {
return (
<ListItem key={pp.name}
style={styles.listItem}
primaryText={pp.name}
onClick={this.onClickMethod}
/>
)
})}
</List>
</div>
);
}
}
const styles = {
listItem: {
// removed for brevity, includes some styles
}, …
Run Code Online (Sandbox Code Playgroud) I'm using React and Material UI for a project, and I'm implementing payment methods. I will basically support different type of payment methods, and depending which one user chooses I want to display a form, and once the user fills the form and submits it, I want to return to my previous view. I have a component that looks like this:
import React, { Component } from 'react';
import { List, ListItem } from 'material-ui';
import { Button } from …
Run Code Online (Sandbox Code Playgroud) 我在我的React代码中有一个函数,如下所示:
getAttachment(url) {
fetch(url).then((responseText) => {
var response = responseText.json();
response.then(function(response){
this.setState({ attachment: response });
});
}.bind(this));
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译时我得到一个错误,说我有一个意外的令牌.bind(this)
.任何想法,如何在承诺中设置状态?
我想在Lisp中编写一个深度反向函数,只依赖于Lisp提供的原始反向函数,以及其他一些常见的东西.我认为使用地图更容易,例如:
(defun deep-reverse (list)
(if (listp list)
(mapcar #'deep-reverse
(reverse list))
list))
Run Code Online (Sandbox Code Playgroud)
但是如果不使用这些地图或其他结构呢?仅仅依靠的东西,如if
,reverse
,append
,null
,nil
,listp
,atom
,cons
,car
,cdr
,等基本的东西.我可以做一个级别的反向,像这样:
(defun reverse (list)
(if (null list)
'nil
(append (reverse (cdr list))
(cons (car list) 'nil))))
Run Code Online (Sandbox Code Playgroud)
但是我如何才能实现深度逆转呢?深度反转的意思是,如果函数的输入是((1 2 3) (4 5 6))
,输出应该是((6 5 4) (3 2 1))
.
我正在创建一个反应应用程序,并且我有一个或多或少像这样定义的组件:
import React, { Component } from 'react';
import axios from 'axios';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
loading: true,
error: null
};
}
componentDidMount() {
var _this = this;
this.serverRequest =
axios
.get("LinkToAPI")
.then(result => {
_this.setState({
data: result.data,
loading: false,
error: null
});
})
.catch(err => {
_this.setState({
loading: false,
error: err
});
});
}
componentWillUnmount() {
this.serverRequest.abort();
}
renderLoading() {
return <div>Loading...</div>
}
renderError() {
return (
<div> …
Run Code Online (Sandbox Code Playgroud) 我正在Go中重写一些C代码.在我的C代码中我有这样的东西:
static void sharedb(unsigned char *sharedkey, unsigned char *send,
const unsigned char *received) {
unsigned char krq[96];
unsigned char buf[64];
// rest removed for brevity
indcpa_enc(send, buf, received, krq + 32);
}
Run Code Online (Sandbox Code Playgroud)
当indcpa_enc
函数的定义如下:
static void indcpa_enc(unsigned char *c,
const unsigned char *m,
const unsigned char *pk,
const unsigned char *coins)
Run Code Online (Sandbox Code Playgroud)
所以,在我的Go代码而不是使用char
数组我使用了byte
数组.我有这样的地方:
func SharedB(sharedKey, send, received []byte) {
var krq [96]byte
var buf [64]byte
// rest removed for brevity
INDCPAEnc(send[:], buf[:SharedKeyBytes], received[:], krq[32:32+CoinBytes])
}
Run Code Online (Sandbox Code Playgroud)
当 …
我知道在Rust中调用C函数的一种方法是使用这样的东西:
extern "C" {
fn abs(input: i32) -> i32;
}
fn main() {
unsafe {
println!("abs(-3) = {}", abs(-3));
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何.s
在Rust代码中调用一些汇编函数(位于与其他Rust文件相同的目录中的文件内)?
在Go中声明一个函数时,可以给出多个相同类型的参数:
func test(a, b, c uint8) { }
Run Code Online (Sandbox Code Playgroud)
Rust是否有办法为多个参数提供相同的类型,而无需手动明确指定每个参数?
这似乎不起作用:
fn test(a, b, c: u8) { }
Run Code Online (Sandbox Code Playgroud) 我看到一些Go函数定义如下:
type poly struct {
coeffs [256]uint16
}
func (p *poly) reset() {
for i := range p.coeffs {
p.coeffs[i] = 0
}
}
Run Code Online (Sandbox Code Playgroud)
您可以稍后将其称为:
var p poly
p.reset()
Run Code Online (Sandbox Code Playgroud)
我还没有在其他编程语言中看到这个.p *poly
重置功能的目的是什么?它似乎像一个函数参数,但在函数名之前写入.有什么澄清吗?
reactjs ×4
javascript ×3
go ×2
rust ×2
assembly ×1
c ×1
c# ×1
common-lisp ×1
console ×1
css ×1
lisp ×1
material-ui ×1