//Kiểm tra chuỗi chỉ là ký tự in thường
$pattern = '/[a-z]/';
$subject = 'abcd';
if (preg_match($pattern, $subject)){
echo 'true';
}
cái này không đúng rồi. Mình đổi chuỗi $subject = 'abcd' thành 'abcd9' nó vẫn trả về true
mình thêm dòng code này vào nó sẽ in ra 6, 7, 8 đúng ý bạn
voidmain(){var callbacks =[];for(var i =6; i <9; i++){
callbacks.add(()=>print(i));}print(callbacks);// thêm dòng này vàofor(final fun in callbacks){// duyệt qua các biến kiểu hàm trong list callbacksfun();// Call các biến kiểu hàm trong list callbacks và kết quả sẽ được in ra là 6, 7, 8}}
Giải thích: vì biến callbacks là 1 List chứa các biến kiểu hàm (nó là biến nhưng kiểu dữ liệu của nó là hàm) và () => print(i) chính là giá trị của từng biến đó. Cho nên chỉ khi nào các biến kiểu hàm trong list callbacks gọi lệnh call thì hàm print(i) mới được thực thi. Lệnh call chính là toán tử (), biến fun gọi lệnh call nên ghi là fun();
================
Đọc thêm nếu bạn còn confuse về biến kiểu hàm:
Ví dụ sau tạo một biến kiểu hàm:
voidFunction() bienKieuHam =()=>print(69);
Trong đó:
bienKieuHam là tên biến
void Function(): chính là kiểu dữ liệu của biến giống như kiểu int, double, String ấy mà kiểu này hơi đặc biệt tí gọi là kiểu hàm (Function type). Đã là hàm thì phải có định nghĩa kiểu dữ liệu input và output. Ở đây void là output và ko có input. Ví dụ viết thế này String Function(int, double) là tạo ra một kiểu hàm trong đó String là output và có 2 input là một cái kiểu int, một cái kiểu double
dấu = là phép gán, sau dấu = là giá trị của biến. Vậy () => print(69) là giá trị của biến bienKieuHam. Giá trị này có tên thuật ngữ trong Dart là anonymous function hoặc lambda expression hoặc closure.
Ví dụ trên có thể viết lại thế này cho dễ hiểu:
voidFunction() bienKieuHam =()=>print(69);// tới đây số 69 chưa được in ra đâu. // Vì hàm print(69) nó đang được lưu trữ bên trong biến `bienKieuHam`// nó được lưu trữ thôi chứ nó chưa được thực thi nên số 69 sẽ không được in ra.bienKieuHam();// thực thi hàm bên trong biến `bienKieuHam` bằng toán tử `()` nên dòng code này sẽ in ra 69
Có phải code của bạn và ý bạn hỏi là thế này phải ko nhỉ?:
var callbacks =[];for(var i =6; i <9; i++){
callbacks.add(()=>print(i));// chỗ này tại sao không in ra gì mặc dù có lệnh print?}print(callbacks);// chỗ này thì in ra cái list Closure gì đấy?
Bạn Minh thân mến. Mình thấy đoạn code này trên mạng thật lạ. Có thể giải thích giùm được ko?
code block dưới có lệnh print(i) nhưng khi run lại ko in ra?
// Closures will capture the value of the index (Dart is lexically scoped)
var callbacks = [];
for (var i = 6; i < 9; i++) {
callbacks.add(() => print(i));
}
//~~~~~~~~
print(callbacks);
// nếu thêm dòng code trên thì sẽ in:
[Closure ‘main_closure’ , Closure ‘main_closure’ , Closure ‘main_closure’]
chỗ đấy mình lấy ví dụ thôi bạn, vì local storage không bị xóa đi khi tab hoặc trình duyệt bị tắt đi nên mình tạo một biến rồi mỗi lần load lại trang thì tăng biến đó thêm 1
Ý này là sao nhỉ bạn?
"Ví dụ: vì dữ liệu được lưu trong Local Storage sẽ không bị mất đi khi trình duyệt bị đóng nên có thể dùng để đếm số lượt truy cập vào trang web."
Additionally, the members generation follows these rules with regard to the members inheritance
Câu này theo như mình hiểu thì có thể nói là:
Việc sinh ra các members(phương thức, thuộc tính) trong data class phải tuân theo các quy luật của kế thừa
Tức là nếu Data class đứng 1 mình thì không sao,
Nhưng nếu data class của chúng ta kế thừa 1 class khác, thì việc sinh tự động các members cũng phải theo các nguyên tắc kế thừa trong OOP
ah ngon ngon a ạ, e có 1 vấn đề thắc mắc nữa là lúc build image xong, chạy lệnh docker-compose up để run container mà lúc đấy n lại báo bị thiếu 1 module, mà module đó trc mình quên ko để ở file requirements.txt , thì có cách nào mình cài thêm thư viện(module) này vào dc ko a nhỉ?
THẢO LUẬN
//Kiểm tra chuỗi chỉ là ký tự in thường $pattern = '/[a-z]/'; $subject = 'abcd'; if (preg_match($pattern, $subject)){ echo 'true'; } cái này không đúng rồi. Mình đổi chuỗi $subject = 'abcd' thành 'abcd9' nó vẫn trả về true
Tạo front-end bằng react-app ở trong thư mục nào ạ. tạo trong thư mục laravel luôn hả anh
mình thêm dòng code này vào nó sẽ in ra 6, 7, 8 đúng ý bạn
Giải thích: vì biến
callbackslà 1 List chứa các biến kiểu hàm (nó là biến nhưng kiểu dữ liệu của nó là hàm) và() => print(i)chính là giá trị của từng biến đó. Cho nên chỉ khi nào các biến kiểu hàm trong listcallbacksgọi lệnh call thì hàmprint(i)mới được thực thi. Lệnh call chính là toán tử(), biếnfungọi lệnh call nên ghi làfun();================ Đọc thêm nếu bạn còn confuse về biến kiểu hàm:
Ví dụ sau tạo một biến kiểu hàm:
Trong đó:
bienKieuHamlà tên biếnvoid Function(): chính là kiểu dữ liệu của biến giống như kiểuint,double,Stringấy mà kiểu này hơi đặc biệt tí gọi là kiểu hàm (Function type). Đã là hàm thì phải có định nghĩa kiểu dữ liệu input và output. Ở đâyvoidlà output và ko có input. Ví dụ viết thế nàyString Function(int, double)là tạo ra một kiểu hàm trong đóStringlà output và có 2 input là một cái kiểuint, một cái kiểudouble=là phép gán, sau dấu=là giá trị của biến. Vậy() => print(69)là giá trị của biếnbienKieuHam. Giá trị này có tên thuật ngữ trong Dart làanonymous functionhoặclambda expressionhoặcclosure.Ví dụ trên có thể viết lại thế này cho dễ hiểu:
Có phải code của bạn và ý bạn hỏi là thế này phải ko nhỉ?:
Bạn Minh thân mến. Mình thấy đoạn code này trên mạng thật lạ. Có thể giải thích giùm được ko?
code block dưới có lệnh print(i) nhưng khi run lại ko in ra?
// Closures will capture the value of the index (Dart is lexically scoped) var callbacks = []; for (var i = 6; i < 9; i++) { callbacks.add(() => print(i)); } //~~~~~~~~ print(callbacks); // nếu thêm dòng code trên thì sẽ in: [Closure ‘main_closure’ , Closure ‘main_closure’ , Closure ‘main_closure’]
Anh quang ơi e cần hỗ trợ về Burp anh có thể hỗ trợ không ạ ?
(thatym)
Ví dụ thôi :3
không ai làm vậy cả :v
Bài viết hay quá
)
chỗ đấy mình lấy ví dụ thôi bạn, vì local storage không bị xóa đi khi tab hoặc trình duyệt bị tắt đi nên mình tạo một biến rồi mỗi lần load lại trang thì tăng biến đó thêm 1
Ý này là sao nhỉ bạn? "Ví dụ: vì dữ liệu được lưu trong Local Storage sẽ không bị mất đi khi trình duyệt bị đóng nên có thể dùng để đếm số lượt truy cập vào trang web."
tks a ạ
Additionally, the members generation follows these rules with regard to the members inheritanceCâu này theo như mình hiểu thì có thể nói là: Việc sinh ra các members(phương thức, thuộc tính) trong data class phải tuân theo các quy luật của kế thừa Tức là nếu Data class đứng 1 mình thì không sao, Nhưng nếu data class của chúng ta kế thừa 1 class khác, thì việc sinh tự động các members cũng phải theo các nguyên tắc kế thừa trong OOP
e
docker-compose downsau đó build lại image rồidocker-compose up.hoặc chui trực tiếp vào container để cài, nhưng như thế không hay vì khi e
downđi sẽ bị mấtah ngon ngon a ạ, e có 1 vấn đề thắc mắc nữa là lúc build image xong, chạy lệnh
docker-compose upđể run container mà lúc đấy n lại báo bị thiếu 1 module, mà module đó trc mình quên ko để ở file requirements.txt , thì có cách nào mình cài thêm thư viện(module) này vào dc ko a nhỉ?Mình làm lại rồi. Ok
num a=3.5; print(a.runtimeType); // double num b= a.toInt(); //int print(b.runtimeType);
Tks.
a hiểu, trước đây a cũng từng bị. Do bản alpine có 1 số thư viện Python không hỗ trợ. Do đó ở Docker file e đổi thành:
Đây là bản Debian Stretch, cũng sẽ có khá là đầy đủ các thư viện python, có cả
scipyđó eHay quá bác (like)
Thư viên scipy với mấy thư viện nữa cũng ko dc hỗ trợ.
Vậy mỗi cái đó mình phải build 1 image khác nhau đúng ko a?