在变量声明之后,星号(*)和数字的含义是什么?如图所示WpName As String * 6
Public Type WayPoint
WpIndex As Integer
WpName As String * 6
WpLat As Double
WpLon As Double
WpLatDir As String * 1
WpLonDir As String * 1
End Type
Run Code Online (Sandbox Code Playgroud) 我习惯于看到类似的东西,id<NSCopying> myVar或者MyObject<NSCopying> myVar我们在说明有问题的变量可以很高兴地拥有NSCopying调用它的方法,而编译器不会摇摆不定.
但是我最近发现了一些定义了这样一个变量的代码:
Class<NSCopying> myClass;
Run Code Online (Sandbox Code Playgroud)
我想知道这实际意味着什么,因为它似乎与前两个例子略有不同.似乎我们说变量myClass可以愉快地接受来自的方法调用NSCopying- 但是具有能够接受这些实例变量方法的类类型似乎没有多大意义.
在我看来,类型的变量在技术上是对象本身,这可能让我或编译器(可能是我!)感到困惑.
所以我猜我在问:
Class<NSCopying> myClass;实际上是什么意思Class<NSCopying> myClass;有所不同id<NSCopying> myVarClass<NSCopying> myClass;有意义地使用?笔记:
NSCopying作为一个例子,并不是我用例的组成部分Class我指的是Class用于声明类型变量的Obj-C关键字Class.我不是将它用作任何类类型的通用术语.我一直在实现 wordpress 插件,但我遇到了一个问题,即发现变量是否已声明。
假设我有一个名为“Hello”的模型。该模型有 2 个变量,分别是“hello_id”和“hello_name”。现在让我们假设在数据库上我们有名为 'hello' 的表,其中 3 列分别为 'hello_id'、'hello_name' 和 'hello_status'。现在我想检查变量是否已声明,如果是,则设置值。
代码
class Hello extends MasterModel{
public $hello_id;
public $hello_name;
function __construct($hello_id = null)
{
if ($hello_id != null){
$this->hello_id = $hello_id;
$result = $wpdb->get_row(
"SELECT * FROM hello WHERE hello_id = $hello_id"
, ARRAY_A);
$this->setModelData($data);
}
}
}
abstract class MasterModel {
protected function setModelData($data)
{
foreach($data as $key=>$value){
if(isset($this->{$key})){ // need to check if such class variable declared
$this->{$key} = $value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我这样做的主要原因是让我的代码在未来可扩展。例如,我可能不会使用数据库中的某些字段,但将来我可能需要它们。 …
我对TSQL有点新手(主要是MySQL体验).我遇到了一些参数声明,我不确定在存储过程中使用与没有'as'关键字的情况下声明的差异是什么(如果有的话):
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
Run Code Online (Sandbox Code Playgroud) 请参阅此代码。
package main
import (
"fmt"
)
func main() {
var arr [4]string = [4]string{"foo", "bar", "baz", "qux"}
for a, b := range arr {
fmt.Println(a, b)
}
// How can I fix this code?
/*
for x int, y string = range arr {
fmt.Println(a, b)
}
*/
}
Run Code Online (Sandbox Code Playgroud)
第一个 for 循环使用:=运算符自动推导出aand的类型b。但是如果我想明确指定循环变量的类型呢?我尝试这样做是在注释代码的第二个块中,这当然因以下错误而失败。
# command-line-arguments
./foo.go:15: syntax error: unexpected name, expecting {
./foo.go:18: syntax error: unexpected }
Run Code Online (Sandbox Code Playgroud)
你能不能帮我解决的第二个代码块,这样我可以指定类型的x和y明确?
如何可能?
switch (param.ParameterType)
{
case Type x when x == typeof(byte):
int invalid;
break;
case Type x when x == typeof(short):
int invalid;
break;
case Type x when x == typeof(int):
break;
case Type x when x == typeof(long):
break;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如何x在每个案例范围内没有任何可见的块.同时,变量invalid不能在不同的开关情况下声明.它必须在一个街区内.
如果没有阻塞那么接下来的变量范围是不可能的.
{
// case byte:
Type x;
int invalid;
// break;
// case short:
Type x; // x can not be declared twice.
int invalid;
}
Run Code Online (Sandbox Code Playgroud)
如果每种情况都有隐形块,则必须遵循以下规则(但不是).
{
{ // block for each case. …Run Code Online (Sandbox Code Playgroud) 我得到
参考错误:initialState 未定义
当我将 initialState 声明为 const in 时beforeEach(()=> {...。那不应该工作吗?
describe('register reducer', () => {
beforeEach(() => {
const initialState = UsersService.getInitialUsersState();
})
it('should return the initial state', () => {
expect(usersReducer(undefined, [])).toEqual(initialState);
});
it('Toggle isBaby or sitter', () => {
deepFreeze(initialState);
let newState = initialState;
newState.isBaby = true;
expect(
usersReducer(initialState, {
type: types.UsersActions.SET_TYPE,
payload: true
})).toEqual(newState);
});
Run Code Online (Sandbox Code Playgroud) 我们正在与一家新公司合作,他们有一个编码标准,他们在方法的第一行立即声明方法中使用的所有 Javascript 变量。
我问他们这样做是否有原因,并只是被告知这是他们的编码标准,所以我用谷歌搜索,显然这确实是一些网站推荐的标准。
我的第一个想法是,如果一个方法太大,以至于您实际上发现将所有变量放在顶部很有帮助,那么您的方法太大并且需要分解。
所以我的问题是,在顶部声明变量而不是在第一次使用变量时声明它们的目的是什么?它只是一个编码标准,旨在帮助那些编写(在我个人看来)我认为太长的方法的人,还是还有其他我忽略的好处?
在作者 Brian W. Kernighan 和 Dennis M. Ritchie 的《C 编程语言》第二版中,他们讨论了声明符和直接声明符。讨论从本书的第 14 页开始。122 与dcl和direct-dcl的 您能以易于理解的方式解释声明符和直接声明符之间的区别吗?是什么让它变得直接?
另外,在第 225
其中直接声明符是标识符或带括号的标识符。特别是,它不能通过 typedef 实现函数类型。
在我看来,声明符是变量或函数的声明。在“TD”中,T部分指定其说明符和类型,D部分指定标识,表示变量或函数的唯一标识名称。这和语言的语法有一定的关系。
声明符是否是间接的,因为它们没有像direct-declarator中那样指定为直接的?
c syntax programming-languages declaration variable-declaration
我想在 php 中执行解构,就像下面的 javascript 代码一样:
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(a,b,rest);
Run Code Online (Sandbox Code Playgroud)
输出:
10 20 [ 30, 40, 50 ]
Run Code Online (Sandbox Code Playgroud)
我如何在 php 中执行该操作?
我的 PHP 代码是:
<?php
$array = [10, 20, 30, 40, 50];
// Using the list syntax:
//list($a, $b, $c[]) = $array;
// Or the shorthand syntax:
[$a, $b, $c[]] = $array;
echo "$a<br>$b<br>";
print_r ($c);
?>
Run Code Online (Sandbox Code Playgroud)
哪个打印:
10
20
Array ( [0] => 30 )
Run Code Online (Sandbox Code Playgroud)
但我想要 $c 中的“[ 30, 40, 50 ]”
php ×2
angular ×1
arrays ×1
c ×1
c# ×1
c#-7.0 ×1
class ×1
constants ×1
declaration ×1
for-loop ×1
go ×1
javascript ×1
objective-c ×1
parameters ×1
scope ×1
syntax ×1
t-sql ×1
unit-testing ×1
vb6 ×1