Today I Learned #29
Replies: 2 comments 2 replies
-
CSS: break-inside và multiple columnsKhi sử dụng <div class="container">
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
...
</div> .container {
column-count: 2;
}
.box {
...
} Sẽ đôi lúc bạn sẽ gặp tình trạng nội dung bị cắt mất đầu mất đuôi khi nó nằm giữa giao điểm của 2 column, ví dụ như box số 4 trong mockup sau: Để khắc phục, chúng ta có thể sử dụng .box {
break-inside: avoid;
} Kết quả khi chuyển tiếp giữa 2 column, nội dung nếu không đủ chỗ sẽ được kéo qua column khác, như hình: |
Beta Was this translation helpful? Give feedback.
-
Rust: Dynamic typing với std::any::AnyXét một tình huống thường gặp trong lập trình: Giả sử ta có một interface kiểu Trong Rust code sẽ nhìn như thế này: pub trait Shape {}
pub struct Rectangle {}
impl Shape for Rectangle {}
pub struct Circle {}
impl Shape for Circle {}
fn main() {
let shapes: Vec<Box<dyn Shape>> = vec![
Box::new(Rectangle {}),
Box::new(Circle {}),
];
} Trong quá trình làm việc với mảng let rect: &Rectangle = shapes.get(0).unwrap().as_ref(); Xong rồi sẽ bị Rust chửi vào mặt:
Lỗi vì Để có thể chuyển một object kiểu pub trait Shape {
fn as_any(&self) -> &dyn std::any::Any;
}
pub struct Rectangle {}
impl Shape for Rectangle {
fn as_any(&self) -> &dyn std::any::Any {
self
}
} Từ bây giờ, chúng ta có thể gọi hàm let shape: &dyn Shape = shapes.get(0).unwrap().as_ref();
let rect: &Rectangle = shape.as_any().downcast_ref().unwrap(); |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Nhằm đối phó với tình trạng bay màu message khi vượt limit 10k trên Slack. Anh chị em có thể post vào thread này sau đó copy link share qua bên Slack nhé.
Beta Was this translation helpful? Give feedback.
All reactions