我使用子调用作为另一个子的参数.示例代码:
test(isInString(), 'second parameter', 'third parameter');
sub test {
my ($boolean, $second, $third) = @_;
print "boolean: $boolean\n second: $second\n third: $third\n";
}
sub isInString {
my $searchFor = 'a';
my $searchIn = 'bcd';
return ($searchFor && $searchIn && ($searchIn =~ $searchFor));
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我希望"isInString"中的return语句计算为false(''或undef或者perl中可能存在的任何东西),这将作为参数#1传递给"Test",如你所知d基本上有
Test(undef, 'second parameter', 'third parameter');
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.isInString返回一个空数组,基本上你得到的是
Test('second parameter', 'third parameter');
Run Code Online (Sandbox Code Playgroud)
从perl调试器中的isInString返回给出:
列表上下文从main :: isInString返回:空数组
我假设这是一个perl上下文的东西,我可以先分配一个标量变量,它工作正常:
my $bool = isInString();
Test($bool, 'second parameter', 'third parameter');
Run Code Online (Sandbox Code Playgroud)
调试器给出 - 从main :: isInString返回标量上下文:''
编辑我删除所有parens相同的结果:
sub isInString {
my $searchFor …Run Code Online (Sandbox Code Playgroud) 这是我通常看到显示的抽象工厂模式的方式:
public abstract class Factory
{
public abstract Product GetProduct();
}
public class ConcreteFactory1 : Factory
{
public override Product GetProduct() { return new Product1(); }
}
class ConcreteFactory2 : Factory
{
public override Product GetProduct() { return new Product2(); }
}
interface Product
{
void SomeMethod();
}
class Product1 : Product
{
public void SomeMethod() { Console.WriteLine("1"); }
}
class Product2 : Product
{
public void SomeMethod() { Console.WriteLine("2"); }
}
class Program
{
static void Main(string[] args)
{ …Run Code Online (Sandbox Code Playgroud) 为什么第二个数组bowerFiles不会过滤到javascript文件.
var gulp = require('gulp');
var mainBowerFiles = require('main-bower-files');
gulp.task('default', function () {
var unfiltered = mainBowerFiles();
console.log('unfiltered files:', unfiltered); // 11 FILES
//var jsRegEx = /js$/i; // tried this way too...
var jsRegEx = new RegExp('js$', 'i');
var bowerFiles = mainBowerFiles(jsRegEx);
console.log('bower files:', bowerFiles); // 11 FILES
});
Run Code Online (Sandbox Code Playgroud)
我试图模仿什么亭子,主文件是做在这里,和它的作品.
我正在使用 Microsoft.Owin.Security.OAuth 实现 OAuth 服务器。
我使用 OAuthAuthorizationServerOptions 来设置 AuthorizeEndpointPath 和 TokenEndpointPath。看起来 UserInfoEndpointPath 没有选项。
OAuthV2 规范确实模糊地讨论了这个端点——
那么,有没有办法利用 OAuthAuthorizationServerProvider 来提供这个端点?我是否必须创建一个单独的 MVC 控制器端点?或者,还有更好的方法?
我有一个旧的 TypeScript Web 应用程序,它通过 HTML 页面上的脚本包含引用所有内容,因此所有内容都在全局命名空间中声明。TypeScript 代码使用 TypeScript 的模块 -
myclass.ts:
module MyModule {
export class MyClass {
}
}
Run Code Online (Sandbox Code Playgroud)
其他文件.ts
let myInstance = new MyModule.MyClass(); // globally available
Run Code Online (Sandbox Code Playgroud)
所有 TypeScript 都使用 tsconfig.json 中的“outFile”写入单个文件,这可能会对全局变量和写入顺序产生问题。
我使用 Visual Studio,它内置了 TypeScript 支持。当您构建解决方案时,它会构建 TypeScript。
我想更新代码以使用现代 ES6 模块:
myclass.ts:
export class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
其他文件.ts
import { MyClass } from "./myclass";
let myInstance = new MyClass();
Run Code Online (Sandbox Code Playgroud)
我最初以为我需要使用第三方库(例如 webpack 或 rollup)来完成这项工作,但是查看 TypeScript 编译器生成的 JavaScript,看起来应该可以继续使用“outFile” - 一切都已包装在模块中,因此不应全局可用:
Object.defineProperty(exports, "__esModule", { value: true });
var MyClass = /** …Run Code Online (Sandbox Code Playgroud) 我同时学习了React和Redux,并全力投入Redux。基本上所有状态都存储在Redux中。我跟着标准allIds,byId状态形状图案为这里详述。
我的应用程序非常以数据为中心,它与API通讯,并且执行许多CRUD类型的操作-fetchAll,fetchById,添加,更新,删除。
API通信被隔离到一个“服务层”模块中,该模块是其自己的npm软件包。对该服务层的所有调用都在redux操作中,使用redux-thunk。
我已经意识到不需要将所有内容都放在Redux中,例如,确实需要在特定组件上使用数据。我想简化这种架构。
因此,我开始重构为自定义钩子。似乎因为我的状态形状更多是对象而不是标量,所以我应该使用useReducer而不是useState...
// reducer
// -------------------------
const initialState = {
adding: false,
updating: false,
deleting: false,
error: null,
items: null
};
const reducer = (state, action) => {
// implementation omitted for brevity. . .
}
const useItemsApi = () => {
const [state, dispatch] = useReducer(reducer, initialState);
// wrapped in useCallback because called in component's useEffect
const fetchItems = useCallback(async …Run Code Online (Sandbox Code Playgroud) 我正在尝试react-query并希望看到它缓存。我有一个页面可以获取书籍列表。
请注意,为了简洁起见,一些代码显然被遗漏了,只是为了展示重要的部分。
const useBooks = options => {
return useQuery(['books', options], bookApi.fetchBooks(options));
}
const Books = () => {
useEffect(() => () => console.log("unmount"), []);
const [options, setOptions] = useState({}); // options ex: { page: 1, search: "test"}
const {error, isLoading, data} = useBooks(options);
return books.map(book => <div>{book.name}</div>;
}
Run Code Online (Sandbox Code Playgroud)
现在这本书是我的应用程序中使用react-router-dom的“页面” :
const App = () => {
return (
<Router>
<>
<Route exact path="/">
<Home />
</Route>
<Route path="/books">
<Books />
</Route>
</>
</Router>
)
} …Run Code Online (Sandbox Code Playgroud) 我有一个母版页,它是一个项目列表,还有一个详细信息页面,我可以在其中获取并更新一个项目。我有以下基于 react-query 库的钩子:
const useItems = (options) => useQuery(["item"], api.fetchItems(options)); // used by master page
const useItem = id => useQuery(["item", id], () => api.fetchItem(id)); // used by details page
const useUpdateItem = () => {
const queryClient = useQueryClient();
return useMutation(item => api.updateItem(item), {
onSuccess: ({id}) => {
queryClient.invalidateQueries(["item"]);
queryClient.invalidateQueries(["item", id]);
}
});
};
Run Code Online (Sandbox Code Playgroud)
UpdatePage 组件有一个表单组件,它接受一个 defaultValue 并将其加载到它的本地“草稿”状态 - 所以在这方面它有点“不受控制”,我不提升草稿状态。
// UpdatePage
const query = useItem(id);
const mutation = useUpdateItem();
return (
{query.isSuccess &&
!query.isLoading &&
<ItemForm defaultValue={query.data} onSubmit={mutation.mutate} …Run Code Online (Sandbox Code Playgroud) 在布尔比较中,在Perl中使用空字符串作为false是安全/良好的做法吗?
例如:
my $s = '';
if($s) {
print 'true';
} else {
print 'false';
}
Run Code Online (Sandbox Code Playgroud)
或者长度函数是更好的方法:
my $s = '';
if(length($s) > 0) {
print 'true';
} else {
print 'false';
}
Run Code Online (Sandbox Code Playgroud) 我试图回答这个问题:
使用Html.ActionLink; 这样的事情:
@(ViewData["page"] == "Page1" ? "Page1" : Html.ActionLink("Page 1", "Page1", "Index"))
Run Code Online (Sandbox Code Playgroud)
这可能吗?
javascript ×3
reactjs ×3
perl ×2
react-query ×2
abstract ×1
architecture ×1
bower ×1
c# ×1
ecmascript-6 ×1
factory ×1
gulp ×1
node.js ×1
oauth ×1
owin ×1
razor ×1
react-redux ×1
react-router ×1
redux ×1
regex ×1
rollupjs ×1
string ×1
typescript ×1
webpack ×1